2 个不稳定版本
使用旧的 Rust 2015
0.2.0 | 2017年6月24日 |
---|---|
0.1.0 | 2017年2月13日 |
#7 in #ecmascript
21 每月下载量
用于 leafers
105KB
2K SLoC
chakracore-rs
这是一个围绕 JavaScript 运行时 (JSRT) 的包装器,用于 Microsoft Edge 和 node-chakracore。该库仍在预发布阶段,尚不稳定。测试尝试覆盖尽可能多的功能,但仍可能发生内存泄漏和段错误。如果您需要一个更稳定的库,请直接使用底层 API: chakracore-sys。
文档
安装
将以下内容添加到您的 Cargo.toml
[dependencies]
chakracore = "0.1.0"
... 并将其添加到您的 crate 根目录
extern crate chakracore as js;
该库本身简单易安装,但其 chakracore-sys
依赖项则不是。为确保构建成功,请查看 chakracore-sys
的 构建说明。
示例
你好世界
extern crate chakracore as js;
fn main() {
let runtime = js::Runtime::new().unwrap();
let context = js::Context::new(&runtime).unwrap();
let guard = context.make_current().unwrap();
let result = js::script::eval(&guard, "5 + 5").unwrap();
assert_eq!(result.to_integer(&guard), 10);
}
函数 - 乘法
extern crate chakracore as js;
fn main() {
let runtime = js::Runtime::new().unwrap();
let context = js::Context::new(&runtime).unwrap();
let guard = context.make_current().unwrap();
let multiply = js::value::Function::new(&guard, Box::new(|guard, info| {
let result = info.arguments[0].to_integer(guard)
* info.arguments[1].to_integer(guard);
Ok(js::value::Number::new(guard, result).into())
}));
let result = multiply.call(&guard, &[
&js::value::Number::new(&guard, 191).into(),
&js::value::Number::new(&guard, 7).into(),
]).unwrap();
assert_eq!(result.to_integer(&guard), 1337);
}
依赖项
~2.6–5.5MB
~113K SLoC