#javascript #interpreter #error #encodable #convert #string #function

duktape

小型嵌入式 JavaScript 解释器

2 个版本

使用旧的 Rust 2015

0.0.2 2015 年 1 月 28 日
0.0.1 2014 年 12 月 7 日

#2 in #encodable

40 个月下载量

无授权

43KB
895

Build Status

文档.

进行中。

Rust 对 Duktape 的封装。在达到最小可用性之前需要做的事情

  • 处理非 UTF-8 字符串。
  • 按名称调用 JavaScript 函数。
  • 定义函数。
    • 从 JavaScript 调用特定的 Rust 函数。
    • 从 Rust 返回错误到 JavaScript。
  • 转换为使用 Encodable/Decodable
    • 将参数转换为使用 Encodable
    • serialize::Json 替换 Value
    • 将返回值转换为使用 Decodable
  • 添加宏。
    • 提供调用函数的宏。
    • 提供定义函数的宏。

lib.rs:

Rust 对 Duktape JavaScript 解释器的接口。这还是一个进行中的项目!

源代码.

use duktape::{Context,Value,DuktapeResult};

fn add_example() -> DuktapeResult<Value<'static>> {
    // Create a new JavaScript interpreter.  This will be automatically
    // cleaned up when `ctx` goes out of scope.
    let mut ctx = try!(Context::new());

    // Load some code from a string.
    try!(ctx.eval("function add(x, y) { return x+y; }"));

    // Call the function we defined.
    ctx.call("add", &[&2.0f64, &1.0f64])
}

assert_eq!(Ok(Value::Number(3.0)), add_example());

我们还初步支持使用 Rust 定义 JavaScript 函数,但仍然太丑陋而不能展示。

依赖项

~250KB