use rune::*; #[test] fn peek_works() { let mut it = vec![1, 2, 3].into_iter().lookahead(); assert_eq!(it.peek(0), Some(&1)); assert_eq!(it.peek(1), Some(&2)); assert_eq!(it.peek(2), Some(&3)); assert_eq!(it.peek(3), None); } #[test] fn peek_mut_modifies_item() { let mut it = vec![10, 20, 30].into_iter().lookahead(); if let Some(x) = it.peek_mut(1) { *x += 100; } assert_eq!(it.next(), Some(10)); assert_eq!(it.next(), Some(120)); } #[test] fn iterates_correctly() { let mut it = vec![1, 2, 3].into_iter().lookahead(); assert_eq!(it.next(), Some(1)); assert_eq!(it.next(), Some(2)); assert_eq!(it.next(), Some(3)); assert_eq!(it.next(), None); } #[test] fn size_hint_accounts_for_buffer() { let mut it = vec![1, 2, 3, 4].into_iter().lookahead(); it.peek(2); let (low, high) = it.size_hint(); assert!(low >= 4); assert_eq!(high, Some(4)); }