6 releases
0.3.0 | Jul 28, 2022 |
---|---|
0.2.1 | Jul 27, 2022 |
0.1.2 | Jul 23, 2022 |
#230 in Parser tooling
30 downloads per month
Used in enve
42KB
925 lines
EString
[dependencies]
estring = "0.3"
A simple way to parse a string using type annotations.
This package was originally designed for enve.
Documentation
For more details, see examples.
Usage
Basic
use estring::EString;
fn main() -> estring::Result<()> {
let res: i32 = EString::from("10").parse()?;
assert_eq!(res, 10);
Ok(())
}
You can use predefined structs like SepVec
if you enable the structs
feature.
Note: You can use custom types as annotations! Just implement 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(())
}
You can also use predefined aggregators if you enable the aggs
feature.
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(())
}
Contact Us
Join us in:
License
MIT. See LICENSE to see the full text.
Contributors
pleshevskiy (Dmitriy Pleshevskiy) – creator, maintainer.