diff options
Diffstat (limited to 'vendor/rayon/src/iter/empty.rs')
-rw-r--r-- | vendor/rayon/src/iter/empty.rs | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/vendor/rayon/src/iter/empty.rs b/vendor/rayon/src/iter/empty.rs deleted file mode 100644 index 85a2e5f..0000000 --- a/vendor/rayon/src/iter/empty.rs +++ /dev/null @@ -1,104 +0,0 @@ -use crate::iter::plumbing::*; -use crate::iter::*; - -use std::fmt; -use std::marker::PhantomData; - -/// Creates a parallel iterator that produces nothing. -/// -/// This admits no parallelism on its own, but it could be used for code that -/// deals with generic parallel iterators. -/// -/// # Examples -/// -/// ``` -/// use rayon::prelude::*; -/// use rayon::iter::empty; -/// -/// let pi = (0..1234).into_par_iter() -/// .chain(empty()) -/// .chain(1234..10_000); -/// -/// assert_eq!(pi.count(), 10_000); -/// ``` -pub fn empty<T: Send>() -> Empty<T> { - Empty { - marker: PhantomData, - } -} - -/// Iterator adaptor for [the `empty()` function](fn.empty.html). -pub struct Empty<T: Send> { - marker: PhantomData<T>, -} - -impl<T: Send> Clone for Empty<T> { - fn clone(&self) -> Self { - empty() - } -} - -impl<T: Send> fmt::Debug for Empty<T> { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.pad("Empty") - } -} - -impl<T: Send> ParallelIterator for Empty<T> { - type Item = T; - - fn drive_unindexed<C>(self, consumer: C) -> C::Result - where - C: UnindexedConsumer<Self::Item>, - { - self.drive(consumer) - } - - fn opt_len(&self) -> Option<usize> { - Some(0) - } -} - -impl<T: Send> IndexedParallelIterator for Empty<T> { - fn drive<C>(self, consumer: C) -> C::Result - where - C: Consumer<Self::Item>, - { - consumer.into_folder().complete() - } - - fn len(&self) -> usize { - 0 - } - - fn with_producer<CB>(self, callback: CB) -> CB::Output - where - CB: ProducerCallback<Self::Item>, - { - callback.callback(EmptyProducer(PhantomData)) - } -} - -/// Private empty producer -struct EmptyProducer<T: Send>(PhantomData<T>); - -impl<T: Send> Producer for EmptyProducer<T> { - type Item = T; - type IntoIter = std::iter::Empty<T>; - - fn into_iter(self) -> Self::IntoIter { - std::iter::empty() - } - - fn split_at(self, index: usize) -> (Self, Self) { - debug_assert_eq!(index, 0); - (self, EmptyProducer(PhantomData)) - } - - fn fold_with<F>(self, folder: F) -> F - where - F: Folder<Self::Item>, - { - folder - } -} |