Crate estring

Source
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§

pub use agg::*;
pub use low::*;
pub use structs::*;
pub use crate::core::*;

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.