#annotations #parser #customizable #type

estring

使用类型注解简单解析字符串的方法

6个版本

0.3.0 2022年7月28日
0.2.1 2022年7月27日
0.1.2 2022年7月23日

#131 in 解析工具


用于enve

MIT许可证

42KB
925

EString

Crates.io docs.rs GitHub Workflow Status The MSRV

[dependencies]
estring = "0.3"

使用类型注解简单解析字符串的方法。

此包最初是为enve设计的。

文档

更多详细信息,请参阅示例

使用方法

基本

use estring::EString;

fn main() -> estring::Result<()> {
    let res: i32 = EString::from("10").parse()?;
    assert_eq!(res, 10);
    Ok(())
}

如果您启用structs功能,则可以使用预定义的结构体,例如SepVec

注意:您可以使用自定义类型作为注解!只需实现ParseFragment即可!

use estring::{SepVec, EString};

type PlusVec<T> = SepVec<T, '+'>;
type MulVec<T> = SepVec<T, '*'>;

fn main() -> estring::Result<()> {
    let res = EString::from("10+5*2+3")
        .parse::<PlusVec<MulVec<f32>>>()?
        .iter()
        .map(|m| m.iter().product::<f32>())
        .sum::<f32>();

    assert_eq!(res, 23.0);
    Ok(())
}

您还可以在启用aggs功能的情况下使用预定义的聚合器。

use estring::{Aggregate, EString, Product, SepVec, Sum};

type PlusVec<T> = SepVec<T, '+'>;
type MulVec<T> = SepVec<T, '*'>;

fn main() -> estring::Result<()> {
    let res = EString::from("10+5*2+3")
        .parse::<Sum<PlusVec<Product<MulVec<f32>>>>>()?
        .agg();

    assert_eq!(res, 23.0);
    Ok(())
}

联系我们

加入我们

Matrix

许可证

MIT。请参阅LICENSE以查看全文。

贡献者

pleshevskiy (Dmitriy Pleshevskiy) – 创建者,维护者。

无运行时依赖项

功能