90 releases
| 0.4.55 | Oct 27, 2025 |
|---|---|
| 0.4.50 | Jan 12, 2025 |
| 0.4.49 | Dec 7, 2024 |
| 0.4.47 | Nov 30, 2024 |
| 0.3.5 | Nov 12, 2018 |
#294 in WebAssembly
8,037,103 downloads per month
Used in 28,170 crates
(1,270 directly)
2.5MB
43K
SLoC
Converting between JavaScript Promises to Rust Futures.
This crate provides a bridge for working with JavaScript Promise types as
a Rust Future, and similarly contains utilities to turn a rust Future
into a JavaScript Promise. This can be useful when working with
asynchronous or otherwise blocking work in Rust (wasm), and provides the
ability to interoperate with JavaScript events and JavaScript I/O
primitives.
There are three main interfaces in this crate currently:
-
A type that is constructed with a
Promiseand can then be used as aFuture<Output = Result<JsValue, JsValue>>. This Rust future will resolve or reject with the value coming out of thePromise. -
Converts a Rust
Future<Output = Result<JsValue, JsValue>>into a JavaScriptPromise. The future's result will translate to either a resolved or rejectedPromisein JavaScript. -
Spawns a
Future<Output = ()>on the current thread. This is the best way to run aFuturein Rust without sending it to JavaScript.
These three items should provide enough of a bridge to interoperate the two systems and make sure that Rust/JavaScript can work together with asynchronous and I/O work.
wasm-bindgen-futures
This crate bridges the gap between a Rust Future and a JavaScript
Promise. It provides two conversions:
- From a JavaScript
Promiseinto a RustFuture. - From a Rust
Futureinto a JavaScriptPromise.
Additionally under the feature flag futures-core-03-stream there is experimental
support for AsyncIterator to Stream conversion.
See the API documentation for more info.
Dependencies
~0.5–1MB
~21K SLoC