workers-rs:用 Rust 写 Cloudflare Workers

发布时间:2026/6/27 6:16:50

workers-rs:用 Rust 写 Cloudflare Workers 文章目录workers-rs用 Rust 写 Cloudflare Workers能做什么和 JavaScript 版本有什么区别怎么上手有限制吗适合什么场景workers-rs用 Rust 写 Cloudflare Workers以前想写 Cloudflare Workers基本只能用 JavaScript 或 TypeScript。这对 Rust 开发者来说挺别扭的明明 Rust 性能更好、更安全却没法直接用。cloudflare/workers-rs 这个项目就是来解决这个问题的。它是 Cloudflare 官方维护的 Rust 绑定库让你可以用纯 Rust 写 Workers编译成 WebAssembly 部署到 Cloudflare 边缘网络。目前 Star 数 3500 多不算特别高但作为 Cloudflare 官方项目质量是有保障的。能做什么这个项目覆盖了 Workers 平台的主要能力HTTP 请求处理用#[event(fetch)]宏标记入口函数接收Request、Env、Context三个参数返回Response。写法和 JavaScript 版本很像只是换成了 Rust 语法。KV 存储通过ctx.kv(NAMESPACE)访问 Cloudflare KV支持读写 JSON 数据。做配置存储、缓存之类的场景够用。Durable Objects有状态的对象支持 SQLite 存储。适合做聊天室、计数器、游戏房间这类需要持久化状态的功能。消息队列支持 Queue 消费和生产可以做异步任务处理。不过这个功能还在 beta 阶段需要手动开启 feature flag。RPC 调用实验性功能支持 Workers 之间的远程过程调用。目前还不太完善但基本的调用场景已经能跑通。和 JavaScript 版本有什么区别最大的区别是类型系统。Rust 的所有权和生命周期机制让你在编译阶段就能发现大部分 bug不用等到运行时才报错。对于边缘计算这种调试不便的场景这个优势很明显。另一个是性能。WebAssembly 的执行效率比 JavaScript 高特别是计算密集的任务。虽然 Workers 本身有 CPU 时间限制但同样的逻辑用 Rust 写通常能跑得更快。还有就是生态。Rust 的 crate 生态很成熟很多库可以直接用只要能编译到wasm32-unknown-unknown目标。像serde、reqwest这些常用库都没问题。怎么上手用cargo generate从模板开始cargo generate cloudflare/workers-rs模板会生成基本的项目结构你只需要改src/lib.rs。本地开发用npx wrangler dev部署用npx wrangler deploy。整个流程和 JavaScript 版本基本一样只是构建环节多了编译 WebAssembly 的步骤。如果你想用axum这类 Web 框架项目提供了httpfeature flag可以把 Workers 的请求类型转换成标准的http::Request和http::Response这样就能直接复用现有的框架代码。有限制吗有。首先不是所有 Rust 库都能用。依赖线程、文件系统、网络 socket 的库在 WebAssembly 环境下跑不了。Tokio 和 async_std 这类异步运行时也不支持不过 async/await 语法本身是可以用的。其次bundle 大小有限制。Workers 对脚本大小有上限如果依赖太多编译出来的.wasm文件可能超限。需要手动优化依赖或者参考 WebAssembly 的代码体积优化指南。最后调试体验不如本地开发。虽然有 Miniflare 可以做本地测试但调试 WebAssembly 的工具链还不够成熟。适合什么场景如果你已经在用 Cloudflare Workers又对 Rust 有经验这个项目值得试试。特别是做 API 网关、边缘缓存、轻量级计算这类场景Rust 的性能优势能体现出来。如果你是 Rust 新手建议先熟悉 Rust 基础再来。Workers 的开发模式和传统后端不太一样同时学两样东西容易混乱。总的来说这是个实用的工具解决了 Rust 开发者在 Cloudflare 平台上的痛点。虽然有些限制但对于合适的场景来说是个不错的选择。说这是个实用的工具解决了 Rust 开发者在 Cloudflare 平台上的痛点。虽然有些限制但对于合适的场景来说是个不错的选择。

相关新闻