#notation #reverse #polish #calculator #back-end #operations

dc-ock

一个简单的逆波兰表示法计算器库

2个稳定版本

2.0.1 2022年8月5日
1.0.0 2022年8月4日
0.3.0 2022年8月4日
0.2.0 2022年8月4日
0.1.2 2022年8月4日

#785 in 数学

37 每月下载次数
用于 dc-cli

MIT 协议

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);
}

无运行时依赖项