了解在使用 workers-rs ↗(或在某些情况下仅使用 wasm-bindgen)以 WebAssembly 编写 Workers 时,已确认可在 Workers 上运行的常用 Rust crate。
每个 Rust crate 示例都包含所需的自定义配置。
这不是详尽列表——许多 Rust crate 都可以编译为 Workers 支持的 wasm32-unknown-unknown ↗ 目标。
在某些情况下,这可能需要禁用默认功能或启用 Wasm 专用功能。考虑添加新依赖项很重要,因为这会显著增加 Worker 的大小。
许多已适配 Wasm 的 crate 会使用 time crate 而不是 std::time。要使 time crate 在 Wasm 中工作,必须启用 wasm-bindgen 功能,以便从 JavaScript 获取计时信息。
可以通过使用 tracing-web crate 和 tracing-subscriber 的 time 功能来启用追踪。
由于 Workers 上的计时限制,除非 span 包含 I/O,否则开始和结束时间将相同。
请参阅 tracing 示例 ↗了解更多信息。
reqwest 库 ↗可以编译为 Wasm,并通过 wasm-bindgen 自动接入 JavaScript fetch API。
tokio-postgres 可以编译为 Wasm。必须将其配置为使用来自 workers-rs 的 Socket:
请参阅 tokio-postgres 示例 ↗了解更多信息。
hyper crate 包含两个 HTTP 客户端:较低级别的 conn 模块和较高级别的 Client。
conn 模块可以与 Workers Socket 一起使用,但 Client 需要尚未适配 Wasm 的计时依赖项。
请参阅 hyper 示例 ↗了解更多信息。