| Crates.io | dynqueue |
| lib.rs | dynqueue |
| version | 0.3.0 |
| created_at | 2020-05-25 22:29:55.017593+00 |
| updated_at | 2020-10-12 08:55:11.545457+00 |
| description | Dynamically extendable Rayon parallel iterator |
| homepage | https://github.com/haraldh/dynqueue |
| repository | https://github.com/haraldh/dynqueue |
| max_upload_size | |
| id | 245877 |
| size | 18,346 |
A DynQueue<T> can be iterated with into_par_iter producing (DynQueueHandle, T) elements.
With the DynQueueHandle<T> a new T can be inserted in the DynQueue<T>,
which is currently iterated over.
A Vec<T>, VecDeque<T> and crossbeam_queue::SegQueue<T> (with feature = "crossbeam-queue")
can be turned into a DynQueue<T> with .into_dyn_queue().
use rayon::iter::IntoParallelIterator as _;
use rayon::iter::ParallelIterator as _;
use dynqueue::IntoDynQueue as _;
fn main() {
let mut result = vec![1, 2, 3]
.into_dyn_queue()
.into_par_iter()
.map(|(handle, value)| { if value == 2 { handle.enqueue(4) }; value })
.collect::<Vec<_>>();
result.sort();
assert_eq!(result, vec![1, 2, 3, 4]);
}
crossbeam-queue : to use crossbeam::queue::SegQueue as the inner collection.IntoDynQueue