clc_engine/lib.rs
1#![warn(missing_docs)]
2
3//! [`Calculator`] calculate given expression.
4//! Core functionality for [clc](https://crates.io/crates/clc).
5//!
6//! # Examples
7//! ```rust
8//! use clc_engine::Calculator;
9//!
10//! let clc = Calculator::new();
11//! let eval = clc.calculate_line("sqrt(sqrt(16)) * (4 + 2)");
12//!
13//! assert_eq!(eval, Ok(12.));
14//! ```
15//!
16//! ## Division by zero
17//! ```rust
18//! use clc_engine::{Calculator, Error,EvalError};
19//!
20//! let clc = Calculator::new();
21//! let err = clc.calculate_line("10 / 0");
22//!
23//! assert_eq!(err, Err(Error::Eval(EvalError::DivisionByZero)));
24//! ```
25//!
26//! Under the hood clc-engine use [nom](https://crates.io/crates/nom) to parse expression
27
28mod calculator;
29mod errors;
30mod eval;
31mod expression;
32mod parse;
33
34pub use {
35 crate::calculator::Calculator,
36 errors::{Error, EvalError},
37};