diff options
| author | Georg Brandl <georg@python.org> | 2016-04-30 11:16:30 +0200 |
|---|---|---|
| committer | Georg Brandl <georg@python.org> | 2016-04-30 11:16:35 +0200 |
| commit | e6201cfb5cabc636a1dbfb1e543e5485639497a4 (patch) | |
| tree | de37087f250b8d5b881c7c4ae6b4b28ae217d68f /src/libcoretest | |
| parent | 9b63263d0d2ee265765ba7f802d2b23fe5d413f5 (diff) | |
| download | rust-e6201cfb5cabc636a1dbfb1e543e5485639497a4.tar.gz rust-e6201cfb5cabc636a1dbfb1e543e5485639497a4.zip | |
Implement find() on Chain iterators
This results in a roughly 2x speedup compared to the default impl "inherited" from Iterator.
Diffstat (limited to 'src/libcoretest')
| -rw-r--r-- | src/libcoretest/iter.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/libcoretest/iter.rs b/src/libcoretest/iter.rs index 6c0cb03b5f7..56b10d0b79b 100644 --- a/src/libcoretest/iter.rs +++ b/src/libcoretest/iter.rs @@ -134,6 +134,19 @@ fn test_iterator_chain_count() { } #[test] +fn test_iterator_chain_find() { + let xs = [0, 1, 2, 3, 4, 5]; + let ys = [30, 40, 50, 60]; + let mut iter = xs.iter().chain(&ys); + assert_eq!(iter.find(|&&i| i == 4), Some(&4)); + assert_eq!(iter.next(), Some(&5)); + assert_eq!(iter.find(|&&i| i == 40), Some(&40)); + assert_eq!(iter.next(), Some(&50)); + assert_eq!(iter.find(|&&i| i == 100), None); + assert_eq!(iter.next(), None); +} + +#[test] fn test_filter_map() { let it = (0..).step_by(1).take(10) .filter_map(|x| if x % 2 == 0 { Some(x*x) } else { None }); |
