// run-pass //! Check that type lengths don't explode with `Map` folds. //! //! The normal limit is a million, and this test used to exceed 1.5 million, but //! now we can survive an even tighter limit. Still seems excessive though... #![type_length_limit = "256000"] // Custom wrapper so Iterator methods aren't specialized. struct Iter(I); impl Iterator for Iter where I: Iterator { type Item = I::Item; fn next(&mut self) -> Option { self.0.next() } } fn main() { let c = Iter(0i32..10) .map(|x| x) .map(|x| x) .map(|x| x) .map(|x| x) .map(|x| x) .map(|x| x) .map(|x| x) .map(|x| x) .map(|x| x) .map(|x| x) .map(|x| x) .map(|x| x) .count(); assert_eq!(c, 10); }