Crate cpc[][src]

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

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.