Sha256: 7e6240878b1fc13b6384fdde0317d5d7ccca3e417b10a201ba61eb5255400fda
Contents?: true
Size: 978 Bytes
Versions: 13
Compression:
Stored size: 978 Bytes
Contents
use itertools::Itertools; struct PanickingCounter { curr: usize, max: usize, } impl Iterator for PanickingCounter { type Item = (); fn next(&mut self) -> Option<Self::Item> { self.curr += 1; assert_ne!( self.curr, self.max, "Input iterator reached maximum of {} suggesting collection by adaptor", self.max ); Some(()) } } fn no_collect_test<A, T>(to_adaptor: T) where A: Iterator, T: Fn(PanickingCounter) -> A, { let counter = PanickingCounter { curr: 0, max: 10_000, }; let adaptor = to_adaptor(counter); for _ in adaptor.take(5) {} } #[test] fn permutations_no_collect() { no_collect_test(|iter| iter.permutations(5)) } #[test] fn combinations_no_collect() { no_collect_test(|iter| iter.combinations(5)) } #[test] fn combinations_with_replacement_no_collect() { no_collect_test(|iter| iter.combinations_with_replacement(5)) }
Version data entries
13 entries across 13 versions & 1 rubygems