#parser #formula #chemical #nested #weight #percent #chemisty

chemical-formula

支持处理wt%和嵌套结构的化学公式解析器

1个不稳定版本

0.1.0 2024年2月22日

#240科学

MIT/Apache

61KB
1K SLoC

Rust 1K SLoC // 0.0% comments Pest 128 SLoC

chemical-formula-rs

Lib.rs Crates.io Docs.rs

Rust 1.74

Crates.io - License

GitHub open issues open pull requests good first issues

此crate提供了一个简单的方式来解析和操作包括重量百分比和嵌套公式的化学公式。

最初的动机是解析一个如Pt5wt%/SiO2的公式,这在异相催化的领域中广泛用作注释。另一个动机是解析嵌套的公式,如(Pt5wt%/SiO2)50wt%(CeO2)50wt%,这可以用来描述复合材料。我们还提供了一个简单的API来在分子式和重量百分比之间进行转换。

安装

请使用 cargo-edit 来始终添加此库的最新版本

cargo add chemical-formula

示例

use chemical_formula::prelude::*;

fn main() {
    let formula = parse_formula("H2O").unwrap();

    println!("Orignal formula: {:?}", formula);
    // Orignal formula: ChemicalFormula { element: {O, H}, stoichiometry: {H: 2.0, O: 1.0}, wt_percent: {} }

    println!("Molecular weight: {:?}", formula.molecular_weight());
    // Molecular weight: Ok(18.015)

    println!("Wt%: {:?}", formula.to_wt_percent().unwrap());
    // Wt%: ChemicalFormula { element: {O, H}, stoichiometry: {}, wt_percent: {H: 11.19067443796836, O: 88.80932556203165} }

    let formula = parse_formula("Pt5wt%/SiO2").unwrap();

    println!("Orignal formula: {:?}", formula);
    // Orignal formula: ChemicalFormula { element: {Si, O, Pt}, stoichiometry: {Si: 1.0, O: 2.0}, wt_percent: {Pt: 5.0} }

    println!(
        "Molecular Formula: {:?}",
        formula.to_molecular_formula().unwrap()
    );
    // Molecular Formula: ChemicalFormula { element: {Si, O, Pt}, stoichiometry: {Si: 1.0, Pt: 0.016209751480873558, O: 2.0}, wt_percent: {} }

    println!("Wt%: {:?}", formula.to_wt_percent().unwrap());
    // Wt%: ChemicalFormula { element: {Si, O, Pt}, stoichiometry: {}, wt_percent: {Pt: 5.0, Si: 44.406487692026026, O: 50.59351230797397} }

    let formula = parse_formula("(Pt5wt%/SiO2)50wt%(CeO2)50wt%").unwrap();

    println!("Orignal formula: {:?}", formula);
    // Orignal formula: ChemicalFormula { element: {Si, Ce, Pt, O}, stoichiometry: {}, wt_percent: {Si: 22.203243846013017, O: 34.59233931398559, Pt: 2.5000000000000004, Ce: 40.70441684000139} }

    println!("Wt%: {:?}", formula.to_wt_percent().unwrap());
    // Wt%: ChemicalFormula { element: {Si, Ce, Pt, O}, stoichiometry: {}, wt_percent: {Si: 22.203243846013017, O: 34.59233931398559, Pt: 2.5000000000000004, Ce: 40.70441684000139} }
}

许可证

许可方式为以下之一

任选其一。

贡献

除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交以包含在本作品中的任何贡献,将按上述方式双重许可,而无需任何额外的条款或条件。

有关更多信息,请参阅 CONTRIBUTING

行为准则

变更日志

版本控制

chemical-formula-rs严格遵循以下语义版本控制2.0.0,但有以下例外

  • 次要版本在主版本更改时不会重置为0(v1除外)。
    将其视为全局功能级别。
  • 补丁版本在主版本或次要版本更改时不会重置为0(v0.1和v1除外)。
    将其视为全局补丁级别。

这包括上面指定的Rust版本要求。
早期Rust版本可能兼容,但可能会随着次要版本或补丁版本而变化。

受功能和补丁影响的版本可以通过 CHANGELOG.md 中的相应标题确定。

依赖项

~2.3–3MB
~62K SLoC