你应该知道的箱子

这是一个精选的优秀箱子列表,你应该了解它们,以便进行 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 是连接 JavaScript 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

这个箱子允许你在 wasm32-unknown-unknown 上调试 panic,通过提供一个 panic hook,将 panic 消息转发到 console.error

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 二进制文件的简单、事件驱动的库。提供每个解析项目的字节偏移量,这在解释 relocs 时是必要的,例如。

解释和编译 WebAssembly

wasmi | crates.io | repository

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

cranelift-wasm | crates.io | repository

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