yastl 0.1.2

Yet another scoped threadpool library
Documentation
`yastl`
=======

[![Crates.io](https://img.shields.io/crates/v/yastl.svg)](https://crates.io/crates/yastl)
[![Documentation](https://img.shields.io/badge/documentation-docs.rs-blue.svg)](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