1 个不稳定版本
0.3.2 | 2022年8月12日 |
---|
#645 在 编程语言
415KB
7.5K SLoC
molt — Rust的嵌入式Tcl解释器
Molt 0.3.1的新功能
有关每个版本的完整新功能列表,请参阅Molt Book中的标注的变更日志。
描述
Molt是一个适用于Rust的嵌入式TCL解释器。应用程序可以在Rust中定义新的TCL命令并执行TCL脚本和字符串。例如,
use molt::Interp;
let mut interp = Interp::new();
let four = interp.eval("expr {2 + 2}")?;
assert_eq!(four.as_int(), 4);
定义一个新命令的方式如下
use molt::check_args;
use molt::MoltResult;
use molt::Value;
use molt::Interp;
use molt::molt_ok;
/// # square *x*
///
/// Computes the square of a value
pub fn cmd_square(_interp: &mut Interp, _: ContextID, argv: &[Value]) -> MoltResult {
// Correct number of arguments?
check_args(1, argv, 2, 2, "x")?;
// Get x, if it's an integer
let x = argv[1].as_int()?;
// Return the result.
molt_ok!(x * x)
}
安装方式如下
use molt::Interp;
let mut interp = Interp::new();
interp.add_command("square", cmd_square);
let num = interp.eval("square 5")?;
assert_eq!(num.as_int(), 25);
值由Value
类型表示,它可以转换为与值字符串表示形式一致的任何类型:整数、浮点数、列表以及定义了MoltAny
特质的任何类型。
Molt仍在开发中。基本的TCL语言已就位,但许多TCL命令尚未实现。有关详细信息,请参阅Molt Book。
在molt-sample
仓库中包含一个示例Molt扩展,包括一个shell应用程序和一个库创建,这两个都定义了新的Molt命令。
依赖关系
~1MB
~16K SLoC