Crate cpc

Source
Expand description

calculation + conversion

cpc parses and evaluates strings of math, with support for units and conversion. 128-bit decimal floating points are used for high accuracy.

cpc lets you mix units, so for example 1 km - 1m results in Number { value: 999, unit: Meter }.

Check out the list of supported units

§Example usage

use cpc::eval;
use cpc::units::Unit;

match eval("3m + 1cm", true, Unit::Celsius, false) {
    Ok(answer) => {
        // answer: Number { value: 301, unit: Unit::Centimeter }
        println!("Evaluated value: {} {:?}", answer.value, answer.unit)
    },
    Err(e) => {
        println!("{e}")
    }
}

Modules§

evaluator
Turns an AstNode into a Number
lexer
Turns a string into Tokens
parser
Turns Tokens into an AstNode
units
Units, and functions you can use with them

Macros§

numtok

Structs§

Number
A number with a Unit.

Enums§

Constant
A constant like Pi or E.
FunctionIdentifier
Functions identifiers like Sqrt, Sin, Round, etc.
LexerKeyword
A temporary enum used by the lexer to later determine what Token it is.
NamedNumber
A named number like Million.
Operator
Math operators like Multiply, parentheses, etc.
TextOperator
A Text operator like To or Of.
Token
A token like a Number, Operator, Unit etc.
UnaryOperator
Unary operators like Percent and Factorial.

Functions§

eval
Evaluates a string into a resulting Number.