Supported crates
Background
Learn about popular Rust crates which have been confirmed to work on Workers when using workers-rs
↗ (or in some cases just wasm-bindgen
), to write Workers in WebAssembly.
Each Rust crate example includes any custom configuration that is required.
This is not an exhaustive list, many Rust crates can be compiled to the wasm32-unknown-unknown
↗ target that is supported by Workers.
In some cases, this may require disabling default features or enabling a Wasm-specific feature. It is important to consider the addition of new dependencies, as this can significantly increase the size of your Worker.
time
Many crates which have been made Wasm-friendly, will use the time
crate instead of std::time
. For the time
crate to work in Wasm, the wasm-bindgen
feature must be enabled to obtain timing information from JavaScript.
tracing
Tracing can be enabled by using the tracing-web
crate and the time
feature for tracing-subscriber
.
Due to timing limitations on Workers, spans will have identical start and end times unless they encompass I/O.
Refer to the tracing
example ↗ for more information.
reqwest
The reqwest
library ↗ can be compiled to Wasm, and hooks into the JavaScript fetch
API automatically using wasm-bindgen
.
tokio-postgres
tokio-postgres
can be compiled to Wasm. It must be configured to use a Socket
from workers-rs
:
Refer to the tokio-postgres
example ↗ for more information.
hyper
The hyper
crate contains two HTTP clients, the lower-level conn
module and the higher-level Client
.
The conn
module can be used with Workers Socket
, however Client
requires timing dependencies which are
not yet Wasm friendly.
Refer to the hyper
example ↗ for more information.