simple-shunting

Crates.iosimple-shunting
lib.rssimple-shunting
version0.1.2
sourcesrc
created_at2024-02-13 18:01:39.339926
updated_at2024-02-13 18:01:39.339926
descriptionA simplified shunting library for evaluating math expressions in cosmwasm
homepage
repositoryhttps://github.com/cowboy0015/tox/tree/master/shunting
max_upload_size
id1138763
size43,701
Speed Demon (cowboy0015)

documentation

README

Documentation

Simplified shunting library for evaluating math expressions in cosmwasm smart contracts. The original crate https://crates.io/crates/shunting could not be used directly for cosmwasm (rand library can not be used directly for wasm-unknonw-unknown target).

Using the library

fn main() {
  let input = "sin(0.2)^2 + cos(0.2)^2";
  let expr = ShuntingParser::parse_str(input).unwrap();
  let result = MathContext::new().eval(&expr).unwrap();
  println!("{} = {}", expr, result);
}

A MathContext

MathContext allows keeping context across multiple invocations to parse and evaluate. You can do this via the setvar method.

The tool in the crate

The crate also ship with the tox binary with a math repl.

$ tox
>> 4!
24
>> a = sin(0.2)^2 + cos(0.2)^2
>> a
1
>> (-3)!
NaN
>> (84 % (5/2)) !
1.32934
>> pi * 2.1^2 / cbrt(-(6+3))
-6.660512
Commit count: 0

cargo fmt