From 249264a7f287481908561380e89bc533b8e444c0 Mon Sep 17 00:00:00 2001 From: L0uisc Date: Thu, 12 Dec 2019 21:51:36 +0200 Subject: [PATCH 1/2] Implement Clone for IntoIter where A: Clone --- lib.rs | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/lib.rs b/lib.rs index e919678..a195a6c 100644 --- a/lib.rs +++ b/lib.rs @@ -1504,6 +1504,15 @@ pub struct IntoIter { end: usize, } +impl Clone for IntoIter +where + A::Item: Copy, +{ + fn clone(&self) -> IntoIter { + SmallVec::from_slice(self.as_slice()).into_iter() + } +} + impl Drop for IntoIter { fn drop(&mut self) { for _ in self {} @@ -2248,6 +2257,37 @@ mod tests { assert_eq!(iter.as_mut_slice(), &[2]); } + #[test] + fn test_into_iter_clone() { + // Test that the cloned iterator yields identical elements and that it owns its own copy + // (i.e. no use after move errors). + let mut iter = SmallVec::<[u8; 2]>::from_iter(0..3).into_iter(); + let mut clone_iter = iter.clone(); + while let Some(x) = iter.next() { + assert_eq!(x, clone_iter.next().unwrap()); + } + assert_eq!(clone_iter.next(), None); + } + + #[test] + fn test_into_iter_clone_partially_consumed_iterator() { + // Test that the cloned iterator only contains the remaining elements of the original iterator. + let mut iter = SmallVec::<[u8; 2]>::from_iter(0..3).into_iter().skip(1); + let mut clone_iter = iter.clone(); + while let Some(x) = iter.next() { + assert_eq!(x, clone_iter.next().unwrap()); + } + assert_eq!(clone_iter.next(), None); + } + + #[test] + fn test_into_iter_clone_empty_smallvec() { + let mut iter = SmallVec::<[u8; 2]>::new().into_iter(); + let mut clone_iter = iter.clone(); + assert_eq!(iter.next(), None); + assert_eq!(clone_iter.next(), None); + } + #[test] fn shrink_to_fit_unspill() { let mut vec = SmallVec::<[u8; 2]>::from_iter(0..3); From 912d74a7cae533e30253ea8f4528cdddfcaf1117 Mon Sep 17 00:00:00 2001 From: L0uisc Date: Thu, 12 Dec 2019 21:51:36 +0200 Subject: [PATCH 2/2] Implement Clone for IntoIter where A: Clone --- .vs/ProjectSettings.json | 3 +++ .vs/VSWorkspaceState.json | 12 +++++++++ .vs/rust-smallvec/v15/.suo | Bin 0 -> 36352 bytes .vs/slnx.sqlite | Bin 0 -> 163840 bytes lib.rs | 49 +++++++++++++++++++++++++++++++++++++ 5 files changed, 64 insertions(+) create mode 100644 .vs/ProjectSettings.json create mode 100644 .vs/VSWorkspaceState.json create mode 100644 .vs/rust-smallvec/v15/.suo create mode 100644 .vs/slnx.sqlite diff --git a/.vs/ProjectSettings.json b/.vs/ProjectSettings.json new file mode 100644 index 0000000..f8b4888 --- /dev/null +++ b/.vs/ProjectSettings.json @@ -0,0 +1,3 @@ +{ + "CurrentProjectSetting": null +} \ No newline at end of file diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json new file mode 100644 index 0000000..995ba26 --- /dev/null +++ b/.vs/VSWorkspaceState.json @@ -0,0 +1,12 @@ +{ + "ExpandedNodes": [ + "", + "\\benches", + "\\fuzz", + "\\fuzz\\fuzz_targets", + "\\fuzz\\in", + "\\scripts" + ], + "SelectedNode": "\\lib.rs", + "PreviewInSolutionExplorer": false +} \ No newline at end of file diff --git a/.vs/rust-smallvec/v15/.suo b/.vs/rust-smallvec/v15/.suo new file mode 100644 index 0000000000000000000000000000000000000000..beba41e4962f67fea73bb92392cf46afaa347f1f GIT binary patch literal 36352 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 J1u@6>e*n>)bQ1so literal 0 HcmV?d00001 diff --git a/lib.rs b/lib.rs index e919678..eba8ba5 100644 --- a/lib.rs +++ b/lib.rs @@ -1504,6 +1504,24 @@ pub struct IntoIter { end: usize, } +impl Clone for IntoIter +where + A::Item: Copy, +{ + fn clone(&self) -> IntoIter { + SmallVec::from_slice(self.as_slice()).into_iter() + } +} + +/*impl Clone for IntoIter +where + A::Item: Clone, +{ + fn clone(&self) -> IntoIter { + SmallVec::from(self.as_slice()).into_iter() + } +}*/ + impl Drop for IntoIter { fn drop(&mut self) { for _ in self {} @@ -2248,6 +2266,37 @@ mod tests { assert_eq!(iter.as_mut_slice(), &[2]); } + #[test] + fn test_into_iter_clone() { + // Test that the cloned iterator yields identical elements and that it owns its own copy + // (i.e. no use after move errors). + let mut iter = SmallVec::<[u8; 2]>::from_iter(0..3).into_iter(); + let mut clone_iter = iter.clone(); + while let Some(x) = iter.next() { + assert_eq!(x, clone_iter.next().unwrap()); + } + assert_eq!(clone_iter.next(), None); + } + + #[test] + fn test_into_iter_clone_partially_consumed_iterator() { + // Test that the cloned iterator only contains the remaining elements of the original iterator. + let mut iter = SmallVec::<[u8; 2]>::from_iter(0..3).into_iter().skip(1); + let mut clone_iter = iter.clone(); + while let Some(x) = iter.next() { + assert_eq!(x, clone_iter.next().unwrap()); + } + assert_eq!(clone_iter.next(), None); + } + + #[test] + fn test_into_iter_clone_empty_smallvec() { + let mut iter = SmallVec::<[u8; 2]>::new().into_iter(); + let mut clone_iter = iter.clone(); + assert_eq!(iter.next(), None); + assert_eq!(clone_iter.next(), None); + } + #[test] fn shrink_to_fit_unspill() { let mut vec = SmallVec::<[u8; 2]>::from_iter(0..3);