diff options
Diffstat (limited to 'library/core/tests/iter.rs')
| -rw-r--r-- | library/core/tests/iter.rs | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/library/core/tests/iter.rs b/library/core/tests/iter.rs index 691767edea6..bc5421bfb5f 100644 --- a/library/core/tests/iter.rs +++ b/library/core/tests/iter.rs @@ -2,6 +2,7 @@ use core::cell::Cell; use core::convert::TryFrom; +use core::iter::TrustedRandomAccess; use core::iter::*; /// An iterator wrapper that panics whenever `next` or `next_back` is called @@ -602,6 +603,26 @@ fn test_zip_nth_back_side_effects_exhausted() { } #[test] +fn test_zip_trusted_random_access_composition() { + let a = [0, 1, 2, 3, 4]; + let b = a; + let c = a; + + let a = a.iter().copied(); + let b = b.iter().copied(); + let mut c = c.iter().copied(); + c.next(); + + let mut z1 = a.zip(b); + assert_eq!(z1.next().unwrap(), (0, 0)); + + let mut z2 = z1.zip(c); + fn assert_trusted_random_access<T: TrustedRandomAccess>(_a: &T) {} + assert_trusted_random_access(&z2); + assert_eq!(z2.next().unwrap(), ((1, 1), 1)); +} + +#[test] fn test_iterator_step_by() { // Identity let mut it = (0..).step_by(1).take(3); |
