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

Download history 78/week @ 2024-03-29

每月 56 次下载

Apache-2.0 WITH LLVM-exception

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