diff options
author | Valentin Popov <valentin@popov.link> | 2024-07-19 15:37:58 +0300 |
---|---|---|
committer | Valentin Popov <valentin@popov.link> | 2024-07-19 15:37:58 +0300 |
commit | a990de90fe41456a23e58bd087d2f107d321f3a1 (patch) | |
tree | 15afc392522a9e85dc3332235e311b7d39352ea9 /vendor/rayon/src/array.rs | |
parent | 3d48cd3f81164bbfc1a755dc1d4a9a02f98c8ddd (diff) | |
download | fparkan-a990de90fe41456a23e58bd087d2f107d321f3a1.tar.xz fparkan-a990de90fe41456a23e58bd087d2f107d321f3a1.zip |
Deleted vendor folder
Diffstat (limited to 'vendor/rayon/src/array.rs')
-rw-r--r-- | vendor/rayon/src/array.rs | 85 |
1 files changed, 0 insertions, 85 deletions
diff --git a/vendor/rayon/src/array.rs b/vendor/rayon/src/array.rs deleted file mode 100644 index 32a5fdd..0000000 --- a/vendor/rayon/src/array.rs +++ /dev/null @@ -1,85 +0,0 @@ -//! Parallel iterator types for [arrays] (`[T; N]`) -//! -//! You will rarely need to interact with this module directly unless you need -//! to name one of the iterator types. -//! -//! [arrays]: https://doc.rust-lang.org/std/primitive.array.html - -use crate::iter::plumbing::*; -use crate::iter::*; -use crate::slice::{Iter, IterMut}; -use crate::vec::DrainProducer; -use std::mem::ManuallyDrop; - -impl<'data, T: Sync + 'data, const N: usize> IntoParallelIterator for &'data [T; N] { - type Item = &'data T; - type Iter = Iter<'data, T>; - - fn into_par_iter(self) -> Self::Iter { - <&[T]>::into_par_iter(self) - } -} - -impl<'data, T: Send + 'data, const N: usize> IntoParallelIterator for &'data mut [T; N] { - type Item = &'data mut T; - type Iter = IterMut<'data, T>; - - fn into_par_iter(self) -> Self::Iter { - <&mut [T]>::into_par_iter(self) - } -} - -impl<T: Send, const N: usize> IntoParallelIterator for [T; N] { - type Item = T; - type Iter = IntoIter<T, N>; - - fn into_par_iter(self) -> Self::Iter { - IntoIter { array: self } - } -} - -/// Parallel iterator that moves out of an array. -#[derive(Debug, Clone)] -pub struct IntoIter<T: Send, const N: usize> { - array: [T; N], -} - -impl<T: Send, const N: usize> ParallelIterator for IntoIter<T, N> { - type Item = T; - - fn drive_unindexed<C>(self, consumer: C) -> C::Result - where - C: UnindexedConsumer<Self::Item>, - { - bridge(self, consumer) - } - - fn opt_len(&self) -> Option<usize> { - Some(N) - } -} - -impl<T: Send, const N: usize> IndexedParallelIterator for IntoIter<T, N> { - fn drive<C>(self, consumer: C) -> C::Result - where - C: Consumer<Self::Item>, - { - bridge(self, consumer) - } - - fn len(&self) -> usize { - N - } - - fn with_producer<CB>(self, callback: CB) -> CB::Output - where - CB: ProducerCallback<Self::Item>, - { - unsafe { - // Drain every item, and then the local array can just fall out of scope. - let mut array = ManuallyDrop::new(self.array); - let producer = DrainProducer::new(array.as_mut_slice()); - callback.callback(producer) - } - } -} |