diff options
| author | bors <bors@rust-lang.org> | 2015-03-04 09:46:29 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2015-03-04 09:46:29 +0000 |
| commit | 6e055c3f0041067000dfae7bbc2b0383a8fed19e (patch) | |
| tree | b06fdb4429c5019a5c72c4dedd4b32477e0a8ada | |
| parent | fed12499e7d91f9cdfba5833e34d20e8fd19b898 (diff) | |
| parent | cd65156514ae527365df8d693921d0e22256ff5d (diff) | |
Auto merge of #22958 - laijs:option_map_for_iter_map, r=alexcrichton
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
| -rw-r--r-- | src/libcore/iter.rs | 19 |
1 files changed, 3 insertions, 16 deletions
diff --git a/src/libcore/iter.rs b/src/libcore/iter.rs index 9495bc2e19d..767828408be 100644 --- a/src/libcore/iter.rs +++ b/src/libcore/iter.rs @@ -1570,24 +1570,13 @@ pub struct Map<I, F> { f: F, } -impl<I: Iterator, F, B> Map<I, F> where F: FnMut(I::Item) -> B { - #[inline] - fn do_map(&mut self, elt: Option<I::Item>) -> Option<B> { - match elt { - Some(a) => Some((self.f)(a)), - _ => None - } - } -} - #[stable(feature = "rust1", since = "1.0.0")] impl<B, I: Iterator, F> Iterator for Map<I, F> where F: FnMut(I::Item) -> B { type Item = B; #[inline] fn next(&mut self) -> Option<B> { - let next = self.iter.next(); - self.do_map(next) + self.iter.next().map(|a| (self.f)(a)) } #[inline] @@ -1602,8 +1591,7 @@ impl<B, I: DoubleEndedIterator, F> DoubleEndedIterator for Map<I, F> where { #[inline] fn next_back(&mut self) -> Option<B> { - let next = self.iter.next_back(); - self.do_map(next) + self.iter.next_back().map(|a| (self.f)(a)) } } @@ -1618,8 +1606,7 @@ impl<B, I: RandomAccessIterator, F> RandomAccessIterator for Map<I, F> where #[inline] fn idx(&mut self, index: usize) -> Option<B> { - let elt = self.iter.idx(index); - self.do_map(elt) + self.iter.idx(index).map(|a| (self.f)(a)) } } |
