Expand description
EString
A simple way to parse a string using type annotations.
This package was originally designed for enve
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 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 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(())
}
For more details, see examples.
Re-exports
Modules
This module will contain aggregate functions (Sum, Product, etc)
Contains the EString
type, as well as the basic implementation of conversions to
string types
Contains the low-level api parse string more accurate!
Contains implementations for standard types (bool
, numbers, Option
, etc.)
Contains the predefined types (SepVec
, Pair
, etc.)
Structs
The error type for operations interacting with EString
’s fragments.
Enums
The reason for the failure to parse.
Type Definitions
The type returned by parser methods.