From 5e556873f4666f79c434fbfc95572e66e3731933 Mon Sep 17 00:00:00 2001 From: Phlosioneer Date: Mon, 16 Apr 2018 16:59:22 -0400 Subject: [PATCH] Add compile-time check for ExactSizeIterator --- src/cargo/core/resolver/resolve.rs | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/cargo/core/resolver/resolve.rs b/src/cargo/core/resolver/resolve.rs index 48f1aebe4..b0468bd69 100644 --- a/src/cargo/core/resolver/resolve.rs +++ b/src/cargo/core/resolver/resolve.rs @@ -205,12 +205,10 @@ impl<'a> Iterator for Deps<'a> { } fn size_hint(&self) -> (usize, Option) { - match self.edges { - // Note: Edges is actually a std::collections::hash_set::Iter, which - // is an ExactSizeIterator. - Some(ref iter) => iter.size_hint(), - None => (0, Some(0)), - } + // Note: Edges is actually a std::collections::hash_set::Iter, which + // is an ExactSizeIterator. + let len = self.edges.as_ref().map(ExactSizeIterator::len).unwrap_or(0); + (len, Some(len)) } } @@ -228,12 +226,10 @@ impl<'a> Iterator for DepsNotReplaced<'a> { } fn size_hint(&self) -> (usize, Option) { - match self.edges { - // Note: Edges is actually a std::collections::hash_set::Iter, which - // is an ExactSizeIterator. - Some(ref iter) => iter.size_hint(), - None => (0, Some(0)), - } + // Note: Edges is actually a std::collections::hash_set::Iter, which + // is an ExactSizeIterator. + let len = self.edges.as_ref().map(ExactSizeIterator::len).unwrap_or(0); + (len, Some(len)) } } -- 2.30.2