diff --git a/src/formatting.rs b/src/formatting.rs index 9c494c3..b439616 100644 --- a/src/formatting.rs +++ b/src/formatting.rs @@ -79,7 +79,7 @@ pub fn get_significant_digits(n: &Float) -> usize { #[cfg(test)] fn eval(s: &str) -> Float { - Nodes::from_str(s).unwrap().evaluate() + crate::nodes::eval(s).unwrap() } #[test] diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..71e5c48 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,4 @@ +pub mod formatting; +pub mod nodes; + +pub use nodes::eval; diff --git a/src/nodes/mod.rs b/src/nodes/mod.rs index f46ad3b..1f8f81b 100644 --- a/src/nodes/mod.rs +++ b/src/nodes/mod.rs @@ -5,10 +5,16 @@ use rug::Float; mod evaluate; -mod from_str; +pub mod from_str; #[cfg(test)] mod tests; +/// helper function to parse to Nodes and immediately evaluate +pub fn eval(s: &str) -> Result { + use std::str::FromStr; + Nodes::from_str(s).map(|nodes| nodes.evaluate()) +} + pub const PREC: u32 = 512; #[derive(Debug, Default, Clone, PartialEq)]