#tokio #async #async-std #async-await #generic

rtx

RTx is a zero-cost runtime-abstraction intended for use by Rust libraries to enable the Freedom of Choice between asynchronous runtimes

1 unstable release

0.1.0 Feb 18, 2022

#1528 in Asynchronous

MIT/Apache

52KB
1K SLoC

RTx

Built with ❤️ by The LaunchBadge team

RTx is a zero-cost runtime-abstraction intended for use by Rust libraries to enable the Freedom of Choice.

A library that takes advantage of RTx will implement asynchronous operations around a zero-cost and ergonomic API.

An application that uses one or more runtime-abstract libraries will act on their Freedom of Choice and pick their runtime, which will be reflected throughout the dependency tree.

  • Asynchronous or Synchronous. Construct and use types from RTx with an abstract asynchronous runtime, or use synchronous IO with std.

  • Freedom of Choice. Be free to enable your downstream usage to use your library with the asynchronous runtime of their choice.

  • Zero Cost. RTx remains zero-cost as long as only 1 runtime is enabled. In other words, there is no operational difference between using tokio or using rtx with only tokio enabled.

Install

For Library Authors

rtx = { version = "0.1.0", features = [ "async" ] }
  • async - Enable the abstract asynchronous interface.

  • blocking - Enable the synchronous interface (using std).

For Application Developers

# use * to let the version be constrained elsewhere in your tree
rtx = { version = "*", features = [ "tokio" ] }
  • tokio - Use the tokio runtime, when available.

  • async-std - Use the async-std runtime.

License

Licensed under either of

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~0–12MB
~126K SLoC