From a03c199d84ede90bcb17fdbb5f356a2b8d13341a Mon Sep 17 00:00:00 2001 From: Aatif Syed Date: Tue, 4 Nov 2025 09:57:24 +0000 Subject: [PATCH] feat: impl PeekingNext for std::collections::* --- src/peeking_take_while.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/peeking_take_while.rs b/src/peeking_take_while.rs index e828b717d..d61e64147 100644 --- a/src/peeking_take_while.rs +++ b/src/peeking_take_while.rs @@ -242,11 +242,33 @@ peeking_next_by_clone! { ['a] ::std::str::Bytes<'a> } peeking_next_by_clone! { ['a, T] ::std::option::Iter<'a, T> } peeking_next_by_clone! { ['a, T] ::std::result::Iter<'a, T> } peeking_next_by_clone! { [T] ::std::iter::Empty } + #[cfg(feature = "use_alloc")] peeking_next_by_clone! { ['a, T] alloc::collections::linked_list::Iter<'a, T> } #[cfg(feature = "use_alloc")] peeking_next_by_clone! { ['a, T] alloc::collections::vec_deque::Iter<'a, T> } +#[cfg(feature = "use_alloc")] +peeking_next_by_clone! { ['a, K, V] alloc::collections::btree_map::Iter<'a, K, V> } +#[cfg(feature = "use_alloc")] +peeking_next_by_clone! { ['a, K, V] alloc::collections::btree_map::Keys<'a, K, V> } +#[cfg(feature = "use_alloc")] +peeking_next_by_clone! { ['a, K, V] alloc::collections::btree_map::Values<'a, K, V> } + +#[cfg(feature = "use_alloc")] +peeking_next_by_clone! { ['a, T] alloc::collections::btree_set::Iter<'a, T> } +#[cfg(feature = "use_alloc")] +peeking_next_by_clone! { ['a, T] alloc::collections::binary_heap::Iter<'a, T> } + +#[cfg(feature = "use_std")] +peeking_next_by_clone! { ['a, K, V] std::collections::hash_map::Iter<'a, K, V> } +#[cfg(feature = "use_std")] +peeking_next_by_clone! { ['a, K, V] std::collections::hash_map::Keys<'a, K, V> } +#[cfg(feature = "use_std")] +peeking_next_by_clone! { ['a, K, V] std::collections::hash_map::Values<'a, K, V> } +#[cfg(feature = "use_std")] +peeking_next_by_clone! { ['a, T] std::collections::hash_set::Iter<'a, T> } + // cloning a Rev has no extra overhead; peekable and put backs are never DEI. peeking_next_by_clone! { [I: Clone + PeekingNext + DoubleEndedIterator] ::std::iter::Rev }