rtx

Crates.iortx
lib.rsrtx
version0.1.0
sourcesrc
created_at2022-02-18 13:58:42.022087
updated_at2022-02-18 13:58:42.022087
descriptionRTx is a zero-cost runtime-abstraction intended for use by Rust libraries to enable the Freedom of Choice between asynchronous runtimes.
homepage
repositoryhttps://github.com/launchbadge/rtx
max_upload_size
id534708
size62,955
Austin Bonander (abonander)

documentation

https://docs.rs/rtx

README

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.

Commit count: 0

cargo fmt