85 releases

0.4.50 Jan 12, 2025
0.4.49 Dec 7, 2024
0.4.47 Nov 30, 2024
0.4.42 Mar 4, 2024
0.3.5 Nov 12, 2018

#1005 in WebAssembly

Download history 1219793/week @ 2025-01-10 1054920/week @ 2025-01-17 1079571/week @ 2025-01-24 1143962/week @ 2025-01-31 1252280/week @ 2025-02-07 1130842/week @ 2025-02-14 1274632/week @ 2025-02-21 1477935/week @ 2025-02-28 1565512/week @ 2025-03-07 1618648/week @ 2025-03-14 2216221/week @ 2025-03-21 1381176/week @ 2025-03-28 1448317/week @ 2025-04-04 1325485/week @ 2025-04-11 1207942/week @ 2025-04-18 1043088/week @ 2025-04-25

5,270,895 downloads per month
Used in 22,661 crates (1,002 directly)

MIT/Apache

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:

  1. JsFuture

    A type that is constructed with a Promise and can then be used as a Future<Output = Result<JsValue, JsValue>>. This Rust future will resolve or reject with the value coming out of the Promise.

  2. future_to_promise

    Converts a Rust Future<Output = Result<JsValue, JsValue>> into a JavaScript Promise. The future's result will translate to either a resolved or rejected Promise in JavaScript.

  3. spawn_local

    Spawns a Future<Output = ()> on the current thread. This is the best way to run a Future in 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

API Documentation

This crate bridges the gap between a Rust Future and a JavaScript Promise. It provides two conversions:

  1. From a JavaScript Promise into a Rust Future.
  2. From a Rust Future into a JavaScript Promise.

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.6–1.2MB
~24K SLoC