#tcl #script #language #scripting

molt-forked

适用于Rust应用的嵌入式Tcl解释器(个人分支)

6个版本

0.4.5 2024年6月26日
0.4.4 2024年6月25日

#347Rust模式

Download history 538/week @ 2024-06-23 58/week @ 2024-06-30

69 每月下载次数
用于 molt-wasm

MIT 许可证

430KB
7.5K SLoC

molt -- Rust的嵌入式Tcl解释器

Molt 0.3.1中的新功能

请参阅Molt手册中的注解变更日志,了解按版本列表的所有新功能。

描述

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手册以获取详细信息。

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

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

依赖项

~0.7–2.6MB
~45K SLoC