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§
- agg
- This module will contain aggregate functions (Sum, Product, etc)
- core
- Contains the
EString
type, as well as the basic implementation of conversions to string types - low
- Contains the low-level api parse string more accurate!
- std
- Contains implementations for standard types (
bool
, numbers,Option
, etc.) - structs
- Contains the predefined types (
SepVec
,Pair
, etc.)
Structs§
- Error
- The error type for operations interacting with
EString
’s fragments.
Enums§
- Reason
- The reason for the failure to parse.
Type Aliases§
- Result
- The type returned by parser methods.