这是使用 Rust 和 WebAssembly 的**未发布**文档,已发布的文档可在 Rust 和 WebAssembly 主文档网站上找到 。这里记录的功能可能在 Rust 和 WebAssembly 工具的发布版本中不可用。

你应该知道的箱子

这是一个精选的列表,列出了你应该了解的用于进行 Rust 和 WebAssembly 开发的优秀箱子。

你也可以浏览发布到 crates.io 的所有 WebAssembly 类别的箱子。

与 JavaScript 和 DOM 交互

wasm-bindgen | crates.io | repository

wasm-bindgen 促进 Rust 和 JavaScript 之间的高级交互。它允许将 JavaScript 内容导入到 Rust 中,并将 Rust 内容导出到 JavaScript 中。

wasm-bindgen-futures | crates.io | repository

wasm-bindgen-futures 是连接 JavaSript Promise 和 Rust Future 的桥梁。它可以双向转换,在 Rust 中处理异步任务时非常有用,并允许与 DOM 事件和 I/O 操作进行交互。

js-sys | crates.io | repository

所有 JavaScript 全局类型和方法的原始 wasm-bindgen 导入,例如 ObjectFunctioneval 等。这些 API 在所有标准 ECMAScript 环境中都是可移植的,不仅仅是 Web,例如 Node.js。

web-sys | crates.io | repository

所有 Web API 的原始 wasm-bindgen 导入,例如 DOM 操作、setTimeout、Web GL、Web Audio 等。

错误报告和日志记录

console_error_panic_hook | crates.io | repository

此箱子允许你通过提供一个将恐慌消息转发到 console.error 的恐慌钩子来调试 wasm32-unknown-unknown 上的恐慌。

console_log | crates.io | repository

此箱子为 log 箱子 提供了一个后端,将记录的消息路由到开发者工具控制台。

动态分配

wee_alloc | crates.io | repository

Wasm-Enabled, Elfin Allocator。当代码大小比分配性能更重要时,一个小型(~1K 未压缩 .wasm)分配器实现。

解析和生成 .wasm 二进制文件

parity-wasm | crates.io | repository

用于序列化、反序列化和构建 .wasm 二进制文件的低级 WebAssembly 格式库。对众所周知的自定义部分(例如“names”部分和“reloc.WHATEVER”部分)有很好的支持。

wasmparser | crates.io | repository

一个用于解析 WebAssembly 二进制文件的简单、事件驱动的库。提供每个解析内容的字节偏移量,这在解释重定位时是必要的,例如。

解释和编译 WebAssembly

wasmi | crates.io | repository

来自 Parity 的一个可嵌入的 WebAssembly 解释器。

cranelift-wasm | crates.io | repository

将 WebAssembly 编译为本地主机的机器代码。Cranelift(原名 Cretonne)代码生成器项目的一部分。