Crates.io | estring |
lib.rs | estring |
version | 0.3.0 |
source | src |
created_at | 2022-07-23 13:22:53.434435 |
updated_at | 2022-07-28 11:43:09.310498 |
description | A simple way to parse a string using type annotations |
homepage | |
repository | https://github.com/pleshevskiy/estring |
max_upload_size | |
id | 631404 |
size | 45,761 |
[dependencies]
estring = "0.3"
A simple way to parse a string using type annotations.
This package was originally designed for enve.
For more details, see examples.
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(())
}
Join us in:
MIT. See LICENSE to see the full text.
pleshevskiy (Dmitriy Pleshevskiy) – creator, maintainer.