21次重大发布
0.27.0 | 2021年5月21日 |
---|---|
0.26.0 | 2021年4月5日 |
0.25.0 | 2021年3月16日 |
0.21.0 | 2020年11月5日 |
0.8.0 | 2019年11月20日 |
#51 in #wasmtime
每月 56 次下载
3MB
49K SLoC
wasmtime-rust
- 从Rust使用WebAssembly
此crate旨在作为从原生Rust应用程序中加载WebAssembly文件的示例。您始终可以直接使用wasmtime
及其crate系列,但此crate的目的是提供一个便捷的宏
#[wasmtime_rust::wasmtime]
trait WasmMarkdown {
fn render(&mut self, input: &str) -> String;
}
fn main() -> anyhow::Result<()> {
let mut markdown = WasmMarkdown::load_file("markdown.wasm")?;
println!("{}", markdown.render("# Hello, Rust!"));
Ok(())
}
在wasmtime-rust
crate中定义的wasmtime
宏被放置在一个trait
上,该trait包含一个wasm模块应导出的功能集。在这种情况下,我们期望有一个render
函数,它接受并返回一个字符串。
该宏展开为一个包含trait上所有方法的struct
(它们都必须是&mut self
)和一个名为load_file
的函数,以实际实例化模块。
请注意,此宏仍处于开发初期阶段,因此错误信息尚不完善,并且并非所有功能都得到支持。
缺少的功能
目前,如果wasm模块导入了WASI命名空间之外的所有符号,则该模块将无法加载。但预计很快将添加对此的支持!
依赖关系
~19–29MB
~467K SLoC