# 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.