# ThreadRunner ThreadRunner is a Rust library for executing tasks concurrently. It currently contains: - **ThreadPool:** Use a pool of threads to handle expensive computations. - **AsyncRuntime:** Seemlessly integrate async code into your synchronous code. # Installation You can use `thread_runner` in your project by adding the following to your `Cargo.toml` file at the dependencies section: `thread_runner = "0.2.0"` ``` [dependencies] thread_runner = "0.2.0" ``` Alternatively you can run the following command in the project directory: ``` cargo add thread_runner ``` This will add the latest version of the "thread_runner" to your Cargo.toml file ## Usage This crate contains module, struct and function level documentations to help you understand how various features employed within it work and how to use them # Example 1 use thread_runner::ThreadPool; let executor = ThreadPool::new(4); for val in 0..10 { executor.execute(move || println!("{}", val)); } executor.join(); # Example 2 use thread_runner::{AsyncRuntime, AsyncFlavor}; use std::time::Duration; let rt = AsyncRuntime::new(AsyncFlavor::CurrentThread); // Spawn a future on the runtime. rt.execute(async { // Do some asynchronous work here... }); // Poll a future on the runtime and block until it completes. let result = rt.poll(async { // Do some asynchronous work here and return a value... 42 }); // Shut down the runtime after a specified timeout duration. rt.terminate(Duration::from_secs(1)); # Contributing All contributions and suggestions are gladly welcome. Here are a few ways you can contribute: - **Issue:** Report a bug or suggest an improvement by creating an issue. - **Pull request:** Propose changes to the codebase by creating a pull request. - **Documentation:** Contribute to documentation to help users understand how to use the software. - **Testing:** Test the software and report any bugs or issues you find. All contributions, large or small, are valuable and appreciated. Thank you for your interest in contributing to this project! # License This project is licensed under the MIT License - see the LICENSE file for details.