shunting_yard/lib.rs
1extern crate num;
2
3pub mod eval;
4pub mod parser;
5pub mod token;
6
7use anyhow::Result;
8use eval::eval;
9use num::Float;
10use parser::parse;
11use std::{fmt::Debug, str::FromStr};
12
13pub fn evaluate<T>(code: &str) -> Result<T>
14where
15 T: Float + FromStr + Debug + Clone + Copy + Into<f64>,
16{
17 match parse::<T>(code) {
18 Ok(tokens) => Ok(eval(&tokens)?),
19 Err(e) => Err(e),
20 }
21}