From d2368adc8f0dd7d6a22bdcd51d72ed99afc7f241 Mon Sep 17 00:00:00 2001 From: electria Date: Wed, 30 Sep 2026 18:25:46 -0700 Subject: [PATCH] feat: create lib.rs API --- src/formatting.rs | 2 +- src/lib.rs | 4 ++++ src/nodes/mod.rs | 8 +++++++- 3 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 src/lib.rs 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)]