diff --git a/src/libcollections/slice.rs b/src/libcollections/slice.rs index 5bc99889f2f..375ba38f29a 100644 --- a/src/libcollections/slice.rs +++ b/src/libcollections/slice.rs @@ -831,7 +831,7 @@ pub trait CloneSliceExt for Sized? { /// assert_eq!(Some(vec![1i, 3, 2]), perms.next()); /// assert_eq!(Some(vec![3i, 1, 2]), perms.next()); /// ``` - #[stable] + #[unstable] fn permutations(&self) -> Permutations; /// Copies as many elements from `src` as it can into `self` (the @@ -950,7 +950,7 @@ pub trait OrdSliceExt for Sized? { /// let b: &mut [_] = &mut [1i, 0, 2]; /// assert!(v == b); /// ``` - #[stable] + #[unstable = "uncertain if this merits inclusion in std"] fn next_permutation(&mut self) -> bool; /// Mutates the slice to the previous lexicographic permutation. @@ -969,7 +969,7 @@ pub trait OrdSliceExt for Sized? { /// let b: &mut [_] = &mut [0i, 1, 2]; /// assert!(v == b); /// ``` - #[stable] + #[unstable = "uncertain if this merits inclusion in std"] fn prev_permutation(&mut self) -> bool; } @@ -1165,7 +1165,7 @@ impl Iterator<(uint, uint)> for ElementSwaps { /// swap applied. /// /// Generates even and odd permutations alternately. -#[stable] +#[unstable] pub struct Permutations { swaps: ElementSwaps, v: Vec, diff --git a/src/libcollections/vec.rs b/src/libcollections/vec.rs index 3e0b3b4aa74..2d71705d80d 100644 --- a/src/libcollections/vec.rs +++ b/src/libcollections/vec.rs @@ -261,7 +261,7 @@ impl Vec { /// owned by the returned `Vec`. The elements of the buffer are copied into the vector /// without cloning, as if `ptr::read()` were called on them. #[inline] - #[stable] + #[unstable = "may be better expressed via composition"] pub unsafe fn from_raw_buf(ptr: *const T, elts: uint) -> Vec { let mut dst = Vec::with_capacity(elts); dst.set_len(elts); diff --git a/src/libcore/iter.rs b/src/libcore/iter.rs index 028d2ce1cbb..a185ec56a00 100644 --- a/src/libcore/iter.rs +++ b/src/libcore/iter.rs @@ -691,13 +691,14 @@ pub trait IteratorExt: Iterator { impl IteratorExt for I where I: Iterator {} /// Extention trait for iterators of pairs. +#[unstable = "newly added trait, likely to be merged with IteratorExt"] pub trait IteratorPairExt: Iterator<(A, B)> { /// Converts an iterator of pairs into a pair of containers. /// /// Loops through the entire iterator, collecting the first component of /// each item into one new container, and the second component into another. fn unzip(mut self) -> (FromA, FromB) where - FromA: FromIterator + Extend, FromB: FromIterator + Extend + FromA: Default + Extend, FromB: Default + Extend { struct SizeHint(uint, Option); impl Iterator for SizeHint { @@ -708,8 +709,11 @@ pub trait IteratorPairExt: Iterator<(A, B)> { } let (lo, hi) = self.size_hint(); - let mut ts: FromA = FromIterator::from_iter(SizeHint(lo, hi)); - let mut us: FromB = FromIterator::from_iter(SizeHint(lo, hi)); + let mut ts: FromA = Default::default(); + let mut us: FromB = Default::default(); + + ts.extend(SizeHint(lo, hi)); + us.extend(SizeHint(lo, hi)); for (t, u) in self { ts.extend(Some(t).into_iter());