use super::{chunk_size::ChunkSize, iteration_order::IterationOrder, num_threads::NumThreads};
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
pub struct Params {
pub num_threads: NumThreads,
pub chunk_size: ChunkSize,
pub iteration_order: IterationOrder,
}
impl Params {
pub fn new(
num_threads: impl Into<NumThreads>,
chunk_size: impl Into<ChunkSize>,
iteration_order: IterationOrder,
) -> Self {
Self {
num_threads: num_threads.into(),
chunk_size: chunk_size.into(),
iteration_order,
}
}
pub fn is_sequential(self) -> bool {
self.num_threads.is_sequential()
}
pub(crate) fn with_num_threads(self, num_threads: impl Into<NumThreads>) -> Self {
Self {
num_threads: num_threads.into(),
chunk_size: self.chunk_size,
iteration_order: self.iteration_order,
}
}
pub(crate) fn with_chunk_size(self, chunk_size: impl Into<ChunkSize>) -> Self {
Self {
num_threads: self.num_threads,
chunk_size: chunk_size.into(),
iteration_order: self.iteration_order,
}
}
pub(crate) fn with_collect_ordering(self, iteration_order: IterationOrder) -> Self {
Self {
num_threads: self.num_threads,
chunk_size: self.chunk_size,
iteration_order,
}
}
}