|
| 1 | +use super::smart_iter::SmartIter; |
1 | 2 | use crate::utils::error::{Error, Result}; |
2 | 3 | use ignore::overrides::{Override, OverrideBuilder}; |
3 | 4 | use rayon::iter::{IntoParallelRefIterator, ParallelIterator}; |
@@ -401,51 +402,3 @@ mod tests { |
401 | 402 | assert_eq!(result[0].identifier, "@rust-team"); |
402 | 403 | } |
403 | 404 | } |
404 | | - |
405 | | -trait SmartIter<T: Send + Sync> { |
406 | | - fn smart_iter(&self, n: usize) -> SmartIterator<T>; |
407 | | -} |
408 | | - |
409 | | -impl<'a, T: Send + Sync> SmartIter<T> for [T] { |
410 | | - fn smart_iter(&self, n: usize) -> SmartIterator<T> { |
411 | | - if self.len() <= n { |
412 | | - SmartIterator::Sequential(self.iter()) |
413 | | - } else { |
414 | | - SmartIterator::Parallel(self.par_iter()) |
415 | | - } |
416 | | - } |
417 | | -} |
418 | | - |
419 | | -enum SmartIterator<'a, T: Send + Sync> { |
420 | | - Sequential(std::slice::Iter<'a, T>), |
421 | | - Parallel(rayon::slice::Iter<'a, T>), |
422 | | -} |
423 | | - |
424 | | -enum SmartFilterMap<'a, T: Send + Sync, F> { |
425 | | - Parallel(rayon::iter::FilterMap<rayon::slice::Iter<'a, T>, F>), |
426 | | - Sequential(std::iter::FilterMap<std::slice::Iter<'a, T>, F>), |
427 | | -} |
428 | | - |
429 | | -impl<'a, T: Send + Sync> SmartIterator<'a, T> { |
430 | | - fn filter_map<B: Send + Sync, F>(self, f: F) -> SmartFilterMap<'a, T, F> |
431 | | - where |
432 | | - F: Fn(&'a T) -> Option<B> + Send + Sync, |
433 | | - { |
434 | | - match self { |
435 | | - SmartIterator::Parallel(iter) => SmartFilterMap::Parallel(iter.filter_map(f)), |
436 | | - SmartIterator::Sequential(iter) => SmartFilterMap::Sequential(iter.filter_map(f)), |
437 | | - } |
438 | | - } |
439 | | -} |
440 | | - |
441 | | -impl<'a, T: Send + Sync, B: Send + Sync, F> SmartFilterMap<'a, T, F> |
442 | | -where |
443 | | - F: Fn(&'a T) -> Option<B> + Send + Sync, |
444 | | -{ |
445 | | - fn collect(self) -> Vec<B> { |
446 | | - match self { |
447 | | - SmartFilterMap::Parallel(iter) => iter.collect(), |
448 | | - SmartFilterMap::Sequential(iter) => iter.collect(), |
449 | | - } |
450 | | - } |
451 | | -} |
0 commit comments