# 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
```toml
rtx = { version = "0.1.0", features = [ "async" ] }
```
- `async` - Enable the abstract asynchronous interface.
- `blocking` - Enable the synchronous interface (using `std`).
### For Application Developers
```toml
# 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
- Apache License, Version 2.0
([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license
([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
## 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.