// the find
cloudflare/workers-rs
Write Cloudflare Workers in 100% Rust via WebAssembly
Official Cloudflare crate for writing Workers in Rust, compiled to WebAssembly via wasm-bindgen. If you want type-safe, memory-safe serverless functions on Cloudflare's edge network without touching JavaScript, this is the path. It's maintained by Cloudflare itself, so it tracks the Workers runtime fairly closely.
The `http` feature flag that bridges to standard `http`/`http_body` types is the right call — it means you can drop in axum directly instead of learning a bespoke router. Durable Objects with SQLite storage are fully exposed, including the SQL iterator, which is rare to see covered this completely in a Wasm binding crate. The `--panic-unwind` build flag with automatic instance reinitialization after hard aborts is genuinely useful operational work, not just a checkbox. The test suite runs against a real Miniflare instance with TypeScript specs rather than mocking the runtime, which means the bindings actually get exercised end-to-end.
No Tokio means no async ecosystem: anything that pulls in tokio as a hard dependency is dead on arrival, and that rules out most of the Rust HTTP client and database driver ecosystem — you're writing wasm32-unknown-unknown compatible code only, which is a significant constraint that bites harder the more complex your worker gets. RPC support is explicitly pre-alpha with primitive types only and requires hand-writing wasm-bindgen FFI, so service-to-service RPC in Rust is painful enough that you might as well stay in JS for that layer. Bundle size hits Workers' limits quickly when you pull in any non-trivial crates, and the guidance on fixing it is essentially 'minimize your dependencies' — there's no built-in tree-shaking strategy or size profiling tooling. Testing end-to-end requires Node and Miniflare, so your Rust project necessarily has a Node dev dependency and JavaScript test files, which is friction that won't bother everyone but will bother the people who came to this crate specifically to avoid JavaScript.