13 个版本
0.1.13 | 2021 年 6 月 10 日 |
---|---|
0.1.12 | 2021 年 6 月 9 日 |
#816 在 WebAssembly
89 每月下载量
13KB
249 行
wasmir
一个用于将高性能 WASM 代码直接嵌入 Rust 程序的库。这个包是为那些绝对讨厌编写 JavaScript 的人创建的。这个库的目标是通过自动编译 WASM 模块并将它们静态链接到你的二进制文件中来减少实现 WASM 所需的额外开销。你需要安装 wasm-bindgen。如果你的项目停止构建,请提交一个问题。
使用方法
将 wasmir 添加为 Cargo.toml 的依赖项
wasmir = "0.1.13"
代码必须在模块内声明。典型用法如下
use wasmir::wasmir;
#[wasmir]
mod my_module {
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern "C" {
pub fn alert(s: &str);
}
#[wasm_bindgen]
pub fn greet(name: &str) {
unsafe {
alert(&format!("Hello, {}!", name));
}
}
}
一旦 proc_macro 完成其工作,上述模块将包含两个二进制 blob 常量,wasm
和 loader
。从 "my_module.js" 服务器加载 loader,从 "my_module_bg.wasm" 服务器加载 wasm。然后,在 index.js 中包含以下代码
import init from './my_module_bg.js';
import {greet} from './my_module_bg.js';
function run() {
greet(\"World\");
}
init().then(run)
你还可以这样指定 WASM 依赖项
#[wasmir(
[dependencies]
wasm-bindgen = "*"
[dependencies.web-sys]
version = "*"
features = ["Document", "Node", "Element"]
)]
依赖项
~1.9–2.5MB
~54K SLoC