File tree Expand file tree Collapse file tree 2 files changed +29
-1
lines changed Expand file tree Collapse file tree 2 files changed +29
-1
lines changed Original file line number Diff line number Diff line change 59
59
60
60
#![stable(feature = "rust1", since = "1.0.0")]
61
61
62
- use alloc::raw_vec::RawVec;
63
62
use alloc::boxed::Box;
64
63
use alloc::heap::EMPTY;
64
+ use alloc::raw_vec::RawVec;
65
+ use borrow::ToOwned;
65
66
use core::cmp::Ordering;
66
67
use core::fmt;
67
68
use core::hash::{self, Hash};
@@ -1633,6 +1634,15 @@ impl<T> DoubleEndedIterator for IntoIter<T> {
1633
1634
#[stable(feature = "rust1", since = "1.0.0")]
1634
1635
impl<T> ExactSizeIterator for IntoIter<T> {}
1635
1636
1637
+ #[stable(feature = "vec_into_iter_clone", since = "1.8.0")]
1638
+ impl<T: Clone> Clone for IntoIter<T> {
1639
+ fn clone(&self) -> IntoIter<T> {
1640
+ unsafe {
1641
+ slice::from_raw_parts(self.ptr, self.len()).to_owned().into_iter()
1642
+ }
1643
+ }
1644
+ }
1645
+
1636
1646
#[stable(feature = "rust1", since = "1.0.0")]
1637
1647
impl<T> Drop for IntoIter<T> {
1638
1648
#[unsafe_destructor_blind_to_params]
Original file line number Diff line number Diff line change @@ -467,6 +467,24 @@ fn test_into_iter_count() {
467
467
assert_eq!(vec![1, 2, 3].into_iter().count(), 3);
468
468
}
469
469
470
+ #[test]
471
+ fn test_into_iter_clone() {
472
+ fn iter_equal<I: Iterator<Item=i32>>(it: I, slice: &[i32]) {
473
+ let v: Vec<i32> = it.collect();
474
+ assert_eq!(&v[..], slice);
475
+ }
476
+ let mut it = vec![1, 2, 3].into_iter();
477
+ iter_equal(it.clone(), &[1, 2, 3]);
478
+ assert_eq!(it.next(), Some(1));
479
+ let mut it = it.rev();
480
+ iter_equal(it.clone(), &[3, 2]);
481
+ assert_eq!(it.next(), Some(3));
482
+ iter_equal(it.clone(), &[2]);
483
+ assert_eq!(it.next(), Some(2));
484
+ iter_equal(it.clone(), &[]);
485
+ assert_eq!(it.next(), None);
486
+ }
487
+
470
488
#[test]
471
489
fn test_cow_from() {
472
490
let borrowed: &[_] = &["borrowed", "(slice)"];
You can’t perform that action at this time.
0 commit comments