diff --git a/src/vec.rs b/src/vec.rs index c28facf..44aa9a8 100644 --- a/src/vec.rs +++ b/src/vec.rs @@ -1128,6 +1128,13 @@ impl IntoIter { } } +impl Clone for IntoIter { + #[inline] + fn clone(&self) -> Self { + EcoVec::from(self.as_slice()).into_iter() + } +} + impl Iterator for IntoIter { type Item = T; diff --git a/tests/tests.rs b/tests/tests.rs index df02e28..f73c816 100644 --- a/tests/tests.rs +++ b/tests/tests.rs @@ -223,9 +223,13 @@ fn test_vec_into_iter() { let mut iter = first.into_iter(); assert_eq!(iter.len(), 3); assert_eq!(iter.next(), Some(v(2))); + let mut second_iter = iter.clone(); assert_eq!(iter.next_back(), Some(v(5))); assert_eq!(iter.as_slice(), [v(4)]); + assert_eq!(second_iter.next_back(), Some(v(5))); + assert_eq!(second_iter.as_slice(), [v(4)]); drop(iter); + drop(second_iter); } #[test]