Crates.io | rtx |
lib.rs | rtx |
version | 0.1.0 |
source | src |
created_at | 2022-02-18 13:58:42.022087 |
updated_at | 2022-02-18 13:58:42.022087 |
description | RTx is a zero-cost runtime-abstraction intended for use by Rust libraries to enable the Freedom of Choice between asynchronous runtimes. |
homepage | |
repository | https://github.com/launchbadge/rtx |
max_upload_size | |
id | 534708 |
size | 62,955 |
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.
rtx = { version = "0.1.0", features = [ "async" ] }
async
- Enable the abstract asynchronous interface.
blocking
- Enable the synchronous interface (using std
).
# 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.
Licensed under either of
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.