7个版本

0.3.1 2020年5月11日
0.3.0 2020年4月10日
0.2.2 2020年1月18日
0.2.0 2019年12月27日
0.1.1 2019年9月21日

#444 in 编程语言


2 crates 中使用

BSD-3-Clause

410KB
7.5K SLoC

molt -- Rust嵌入式Tcl解释器

Molt 0.3.1新功能

查看Molt手册中的变更日志,获取每个版本的新功能完整列表。

描述

Molt是一个嵌入式Tcl解释器,适用于Rust。应用程序可以在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手册。

molt-sample仓库包含一个示例Molt扩展,包括shell应用程序和库创建,它们都定义了新的Molt命令。

请访问我的博客获取新闻,Molt手册获取详细信息,以及GitHub仓库获取问题跟踪等。

依赖

~1MB
~16K SLoC