#javascript #module #run-time #wilton

wilton_rust

Rust 模块支持 Wilton JavaScript 运行时

2 个不稳定版本

使用旧的 Rust 2015

0.2.0 2018年4月14日
0.1.0 2018年3月14日

#2261 in 开发工具

Apache-2.0

15KB
181 代码行

Rust 模块支持 Wilton JavaScript 运行时

此库允许使用 Rust 编写 Wilton 原生模块。

许可证信息

本项目根据Apache License 2.0 发布。

变更日志

2018-04-14

  • 版本 0.2.0
  • 支持回调到 JS

2018-03-14

  • 版本 0.1.0
  • 初始公开版本

lib.rs:

Rust 模块支持 Wilton JavaScript 运行时

使用示例

// configure Cargo to build a shared library
[lib]
crate-type = ["dylib"]

// in lib.rs, import serde and wilton_rust
#[macro_use]
extern crate serde_derive;
extern crate wilton_rust;
...
// declare input/output structs
#[derive(Deserialize)]
struct MyIn { ... }
#[derive(Serialize)]
struct MyOut { ... }
...
// write a function that does some work
fn hello(obj: MyIn) -> MyOut { ... }
...
// register that function inside the `wilton_module_init` function,
// that will be called by Wilton during the Rust module load
#[no_mangle]
pub extern "C" fn wilton_module_init() -> *mut std::os::raw::c_char {
   // register a call, error checking omitted
   wilton_rust::register_wiltocall("hello", |obj: MyIn| { hello(obj) });
   // return success status to Wilton
   wilton_rust::create_wilton_error(None)
}

查看一个示例,了解如何从 JavaScript 加载和使用 Rust 库。

依赖

~355–760KB
~17K SLoC