`yastl`
=======
[](https://crates.io/crates/yastl)
[](https://docs.rs/yastl)
**Yet another scoped threadpool library for Rust.**
`yastl` is heavily inspired by the [`scoped_threadpool`][scoped_threadpool] and
[`scoped_pool`][scoped_pool] crates. It is mostly a port to modern Rust of the
[`scoped_pool`][scoped_pool] crate
## Example
```rust
use yastl::Pool;
fn main() {
let pool = Pool::new(4);
let mut list = vec![1, 2, 3, 4, 5];
pool.scoped(|scope| {
// since the `scope` guarantees that the threads are finished if it drops,
// we can safely borrow `list` inside here.
for x in list.iter_mut() {
scope.execute(move || {
*x += 2;
});
}
});
assert_eq!(list, vec![3, 4, 5, 6, 7]);
}
```
## Feature Flags
- `coz`: Enable support for the [`coz`](https://github.com/plasma-umass/coz) profiler.
Calls `coz::thread_init()` in every new thread.
### License
Licensed under the [MIT][mit] license.
[scoped_threadpool]: https://crates.io/crates/scoped_threadpool
[scoped_pool]: https://crates.io/crates/scoped_pool
[mit]: https://github.com/Stupremee/yastl/tree/main/LICENSE