A Rust library for parsing, representing, and transforming chemical formulas.
chemformula is a Rust crate for working with chemical formulas, providing tools for:
- Parsing chemical formula strings
- Representing formulas as structured data
- Transforming and manipulating formulas
- Working with elements and compositions
It is designed for:
- Chemistry-related software
- Scientific computing
- Data processing pipelines involving chemical compositions
- 🧪 Parse chemical formulas (e.g.,
H2O,Al2O3, etc.) - 🧱 Structured representation of formulas
- 🔄 Formula transformation utilities
- 🧬 Element-level abstraction
- ⚡ Lightweight and fast
- 🧠 Designed for extensibility
- Language: Rust
- No heavy dependencies (lightweight core)
src/
├── lib.rs # Library entry point
├── main.rs # Example / CLI entry
├── formula.rs # Core formula representation
├── element.rs # Element definitions
├── parse.rs # Parsing logic
├── transform.rs # Formula transformations
[dependencies]
chemformula = "0.1"use chemformula::parse;
fn main() {
let formula = parse("H2O").unwrap();
println!("{:?}", formula);
}let f = parse("Al2O3")?;use chemformula::element::Element;
// Example usage (depends on your API)
let oxygen = Element::new("O");use chemformula::transform;
// Example (conceptual)
let new_formula = transform::normalize(f);Handles conversion from string → structured formula.
Defines internal representation of a chemical formula.
Represents chemical elements.
Provides utilities for modifying formulas.
cargo test- May not yet support:
- Nested parentheses
- Charges / ions
- Isotopes
- API still evolving
- Support nested formulas (e.g.,
(NH4)2SO4) - Add molar mass calculations
- Improve parser robustness
- Add serialization (JSON, etc.)
- Expand documentation and examples
Contributions are welcome!
- Fork the repo
- Create a branch
- Commit changes
- Open a PR
https://github.com/evnekdev/chemformula/issues
MIT
Evgenii Nekhoroshev
https://github.com/evnekdev