diff options
Diffstat (limited to 'vendor/rayon/src/iter/from_par_iter.rs')
-rw-r--r-- | vendor/rayon/src/iter/from_par_iter.rs | 279 |
1 files changed, 0 insertions, 279 deletions
diff --git a/vendor/rayon/src/iter/from_par_iter.rs b/vendor/rayon/src/iter/from_par_iter.rs deleted file mode 100644 index 49afd6c..0000000 --- a/vendor/rayon/src/iter/from_par_iter.rs +++ /dev/null @@ -1,279 +0,0 @@ -use super::noop::NoopConsumer; -use super::{FromParallelIterator, IntoParallelIterator, ParallelExtend, ParallelIterator}; - -use std::borrow::Cow; -use std::collections::LinkedList; -use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet}; -use std::collections::{BinaryHeap, VecDeque}; -use std::hash::{BuildHasher, Hash}; -use std::rc::Rc; -use std::sync::Arc; - -/// Creates an empty default collection and extends it. -fn collect_extended<C, I>(par_iter: I) -> C -where - I: IntoParallelIterator, - C: ParallelExtend<I::Item> + Default, -{ - let mut collection = C::default(); - collection.par_extend(par_iter); - collection -} - -/// Collects items from a parallel iterator into a vector. -impl<T> FromParallelIterator<T> for Vec<T> -where - T: Send, -{ - fn from_par_iter<I>(par_iter: I) -> Self - where - I: IntoParallelIterator<Item = T>, - { - collect_extended(par_iter) - } -} - -/// Collects items from a parallel iterator into a boxed slice. -impl<T> FromParallelIterator<T> for Box<[T]> -where - T: Send, -{ - fn from_par_iter<I>(par_iter: I) -> Self - where - I: IntoParallelIterator<Item = T>, - { - Vec::from_par_iter(par_iter).into() - } -} - -/// Collects items from a parallel iterator into a reference-counted slice. -impl<T> FromParallelIterator<T> for Rc<[T]> -where - T: Send, -{ - fn from_par_iter<I>(par_iter: I) -> Self - where - I: IntoParallelIterator<Item = T>, - { - Vec::from_par_iter(par_iter).into() - } -} - -/// Collects items from a parallel iterator into an atomically-reference-counted slice. -impl<T> FromParallelIterator<T> for Arc<[T]> -where - T: Send, -{ - fn from_par_iter<I>(par_iter: I) -> Self - where - I: IntoParallelIterator<Item = T>, - { - Vec::from_par_iter(par_iter).into() - } -} - -/// Collects items from a parallel iterator into a vecdeque. -impl<T> FromParallelIterator<T> for VecDeque<T> -where - T: Send, -{ - fn from_par_iter<I>(par_iter: I) -> Self - where - I: IntoParallelIterator<Item = T>, - { - Vec::from_par_iter(par_iter).into() - } -} - -/// Collects items from a parallel iterator into a binaryheap. -/// The heap-ordering is calculated serially after all items are collected. -impl<T> FromParallelIterator<T> for BinaryHeap<T> -where - T: Ord + Send, -{ - fn from_par_iter<I>(par_iter: I) -> Self - where - I: IntoParallelIterator<Item = T>, - { - Vec::from_par_iter(par_iter).into() - } -} - -/// Collects items from a parallel iterator into a freshly allocated -/// linked list. -impl<T> FromParallelIterator<T> for LinkedList<T> -where - T: Send, -{ - fn from_par_iter<I>(par_iter: I) -> Self - where - I: IntoParallelIterator<Item = T>, - { - collect_extended(par_iter) - } -} - -/// Collects (key, value) pairs from a parallel iterator into a -/// hashmap. If multiple pairs correspond to the same key, then the -/// ones produced earlier in the parallel iterator will be -/// overwritten, just as with a sequential iterator. -impl<K, V, S> FromParallelIterator<(K, V)> for HashMap<K, V, S> -where - K: Eq + Hash + Send, - V: Send, - S: BuildHasher + Default + Send, -{ - fn from_par_iter<I>(par_iter: I) -> Self - where - I: IntoParallelIterator<Item = (K, V)>, - { - collect_extended(par_iter) - } -} - -/// Collects (key, value) pairs from a parallel iterator into a -/// btreemap. If multiple pairs correspond to the same key, then the -/// ones produced earlier in the parallel iterator will be -/// overwritten, just as with a sequential iterator. -impl<K, V> FromParallelIterator<(K, V)> for BTreeMap<K, V> -where - K: Ord + Send, - V: Send, -{ - fn from_par_iter<I>(par_iter: I) -> Self - where - I: IntoParallelIterator<Item = (K, V)>, - { - collect_extended(par_iter) - } -} - -/// Collects values from a parallel iterator into a hashset. -impl<V, S> FromParallelIterator<V> for HashSet<V, S> -where - V: Eq + Hash + Send, - S: BuildHasher + Default + Send, -{ - fn from_par_iter<I>(par_iter: I) -> Self - where - I: IntoParallelIterator<Item = V>, - { - collect_extended(par_iter) - } -} - -/// Collects values from a parallel iterator into a btreeset. -impl<V> FromParallelIterator<V> for BTreeSet<V> -where - V: Send + Ord, -{ - fn from_par_iter<I>(par_iter: I) -> Self - where - I: IntoParallelIterator<Item = V>, - { - collect_extended(par_iter) - } -} - -/// Collects characters from a parallel iterator into a string. -impl FromParallelIterator<char> for String { - fn from_par_iter<I>(par_iter: I) -> Self - where - I: IntoParallelIterator<Item = char>, - { - collect_extended(par_iter) - } -} - -/// Collects characters from a parallel iterator into a string. -impl<'a> FromParallelIterator<&'a char> for String { - fn from_par_iter<I>(par_iter: I) -> Self - where - I: IntoParallelIterator<Item = &'a char>, - { - collect_extended(par_iter) - } -} - -/// Collects string slices from a parallel iterator into a string. -impl<'a> FromParallelIterator<&'a str> for String { - fn from_par_iter<I>(par_iter: I) -> Self - where - I: IntoParallelIterator<Item = &'a str>, - { - collect_extended(par_iter) - } -} - -/// Collects strings from a parallel iterator into one large string. -impl FromParallelIterator<String> for String { - fn from_par_iter<I>(par_iter: I) -> Self - where - I: IntoParallelIterator<Item = String>, - { - collect_extended(par_iter) - } -} - -/// Collects boxed strings from a parallel iterator into one large string. -impl FromParallelIterator<Box<str>> for String { - fn from_par_iter<I>(par_iter: I) -> Self - where - I: IntoParallelIterator<Item = Box<str>>, - { - collect_extended(par_iter) - } -} - -/// Collects string slices from a parallel iterator into a string. -impl<'a> FromParallelIterator<Cow<'a, str>> for String { - fn from_par_iter<I>(par_iter: I) -> Self - where - I: IntoParallelIterator<Item = Cow<'a, str>>, - { - collect_extended(par_iter) - } -} - -/// Collects an arbitrary `Cow` collection. -/// -/// Note, the standard library only has `FromIterator` for `Cow<'a, str>` and -/// `Cow<'a, [T]>`, because no one thought to add a blanket implementation -/// before it was stabilized. -impl<'a, C: ?Sized, T> FromParallelIterator<T> for Cow<'a, C> -where - C: ToOwned, - C::Owned: FromParallelIterator<T>, - T: Send, -{ - fn from_par_iter<I>(par_iter: I) -> Self - where - I: IntoParallelIterator<Item = T>, - { - Cow::Owned(C::Owned::from_par_iter(par_iter)) - } -} - -/// Collapses all unit items from a parallel iterator into one. -/// -/// This is more useful when combined with higher-level abstractions, like -/// collecting to a `Result<(), E>` where you only care about errors: -/// -/// ``` -/// use std::io::*; -/// use rayon::prelude::*; -/// -/// let data = vec![1, 2, 3, 4, 5]; -/// let res: Result<()> = data.par_iter() -/// .map(|x| writeln!(stdout(), "{}", x)) -/// .collect(); -/// assert!(res.is_ok()); -/// ``` -impl FromParallelIterator<()> for () { - fn from_par_iter<I>(par_iter: I) -> Self - where - I: IntoParallelIterator<Item = ()>, - { - par_iter.into_par_iter().drive_unindexed(NoopConsumer) - } -} |