15 lines
342 B
Rust
15 lines
342 B
Rust
use estring::{EString, SepVec};
|
|
|
|
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(())
|
|
}
|