diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lib.rs | 22 |
1 files changed, 21 insertions, 1 deletions
@@ -44,7 +44,7 @@ #![forbid(unsafe_code)] #![warn(missing_docs)] -use std::{collections::HashMap, num::NonZeroUsize}; +use std::{collections::HashMap, iter::FusedIterator, num::NonZeroUsize}; use crossbeam_channel::{Receiver, Select, Sender, TryRecvError}; @@ -295,6 +295,26 @@ where } } } + + fn size_hint(&self) -> (usize, Option<usize>) { + let (lower, upper) = self.iter.size_hint(); + let inflight = self.inflight(); + ( + lower.saturating_add(inflight), + upper.and_then(|i| i.checked_add(inflight)), + ) + } +} + +impl<I, B> FusedIterator for ParallelMap<I, B> where I: FusedIterator {} + +impl<I, B> ExactSizeIterator for ParallelMap<I, B> +where + I: ExactSizeIterator, +{ + fn len(&self) -> usize { + self.iter.len() + self.inflight() + } } /// Calls a given closure when the thread unwinds due to a panic. |