pub struct Calculator { /* private fields */ }
Expand description
§Calculator
See it in action on https://msuesskraut.github.io/calc/index.html.
Further examples are in Calculator::execute
.
Implementations§
Source§impl Calculator
impl Calculator
Sourcepub fn execute(&mut self, line: &str) -> Result<Value, Error>
pub fn execute(&mut self, line: &str) -> Result<Value, Error>
Executes a command line. These kinds of statements are supported:
- Expression:
use rust_expression::{Calculator, Value}; let mut c = Calculator::new(); assert_eq!(Ok(Value::Number(3.0)), c.execute("1 + 2"));
- Variable assignments:
assert_eq!(Ok(Value::Void), c.execute("a := 6")); assert_eq!(Ok(Value::Number(36.0)), c.execute("a ^ 2"));
- Solving linear expressions:
assert_eq!(Ok(Value::Solved {variable: "x".to_string(), value: 4.0}), c.execute("solve 3 * x - 2 = x + a for x"));
- Function definition:
assert_eq!(Ok(Value::Void), c.execute("fun(x, y) := y - x")); assert_eq!(Ok(Value::Number(2.0)), c.execute("fun(1.5 * 2, 3 + a) - 4"));
- Create a plot:
assert_eq!(Ok(Value::Void), c.execute("f(x) := x ^ 2")); match c.execute("plot f") { Ok(Value::Graph(graph)) => { let area = Area::new(-100., -100., 100., 100.); let screen = Area::new(0., 0., 60., 40.); let plot = graph.plot(&area, &screen).unwrap(); assert_eq!(Some(20.), plot.points[30]); } // ... }
Trait Implementations§
Source§impl Debug for Calculator
impl Debug for Calculator
Source§impl Default for Calculator
impl Default for Calculator
Source§fn default() -> Calculator
fn default() -> Calculator
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for Calculator
impl !RefUnwindSafe for Calculator
impl !Send for Calculator
impl !Sync for Calculator
impl Unpin for Calculator
impl !UnwindSafe for Calculator
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more