2个稳定版本
2.0.1 | 2022年8月5日 |
---|---|
1.0.0 |
|
0.3.0 |
|
0.2.0 |
|
0.1.2 |
|
#785 in 数学
37 每月下载次数
用于 dc-cli
14KB
231 行
dc.rs
dc.rs(也称为 dc-ock,用于Open Computing Kit)是一个逆波兰表示法(后缀)计算器库,提供类似于Unix "dc"命令的后端功能,用Rust编写。它缺少dc的一些更高级功能,但仍然包含大多数简单使用所需的核心数学运算。
有一个基于此库构建的 命令行工具。
构建dc.rs
...有点尴尬,但也不算太糟糕。
要构建dc.rs,您需要 cargo
。您可以使用 cargo build --lib
构建库,或者使用 cargo build --features bbin --bin dc-cli
构建可执行文件。
这有点奇怪,因为存在仅二进制依赖项,但Rust目前不支持它们,所以我们通过使用 --features
标志来解决这个问题。这可以防止在构建库时下载大量的二进制依赖项。
示例
将字符串转换为CalcType
fn main() {
let x: CalcType = str_to_calc_type("1").unwrap(); // returns Val(1.)
let y: CalcType = str_to_calc_type("+").unwrap(); // returns Addition
let z: CalcType = str_to_calc_type("*").unwrap(); // returns Multiplication
// and so on.
}
安全评估表达式
fn main() {
let expr = "1 2 +";
match safe_eval(expr) {
Ok(x) => println!("{:?}", x), // prints [3.0]
Err(e) => println!("{}", e), // prints an error message
}
}
使用堆持久性评估表达式
fn main() {
let mut stack: VecDeque<f64> = VecDeque::new();
stack.push_back(2.);
stack.push_back(7.5);
stack.push_back(3.5);
stack = safe_eval_with_stack("+ +", stack).unwrap();
println!("{:?}", stack);
}