rollup merge of #23721: erickt/deprecate

This is technically a breaking change as it deprecates and unstables some previously stable apis that were missed in the last round of deprecations.

[breaking change]
This commit is contained in:
Alex Crichton
2015-03-27 10:07:44 -07:00
4 changed files with 30 additions and 35 deletions

View File

@@ -611,9 +611,11 @@ impl<T> [T] {
core_slice::SliceExt::get_mut(self, index) core_slice::SliceExt::get_mut(self, index)
} }
/// Work with `self` as a mut slice. /// Deprecated: use `&mut s[..]` instead.
/// Primarily intended for getting a &mut [T] from a [T; N]. #[unstable(feature = "collections",
#[stable(feature = "rust1", since = "1.0.0")] reason = "will be replaced by slice syntax")]
#[deprecated(since = "1.0.0", reason = "use &mut s[..] instead")]
#[allow(deprecated)]
pub fn as_mut_slice(&mut self) -> &mut [T] { pub fn as_mut_slice(&mut self) -> &mut [T] {
core_slice::SliceExt::as_mut_slice(self) core_slice::SliceExt::as_mut_slice(self)
} }

View File

@@ -423,24 +423,13 @@ impl<T> Vec<T> {
} }
} }
/// Returns a mutable slice of the elements of `self`. /// Deprecated: use `&mut s[..]` instead.
///
/// # Examples
///
/// ```
/// fn foo(slice: &mut [i32]) {}
///
/// let mut vec = vec![1, 2];
/// foo(vec.as_mut_slice());
/// ```
#[inline] #[inline]
#[stable(feature = "rust1", since = "1.0.0")] #[unstable(feature = "collections",
reason = "will be replaced by slice syntax")]
#[deprecated(since = "1.0.0", reason = "use &mut s[..] instead")]
pub fn as_mut_slice(&mut self) -> &mut [T] { pub fn as_mut_slice(&mut self) -> &mut [T] {
unsafe { &mut self[..]
let ptr = *self.ptr;
assume(!ptr.is_null());
slice::from_raw_parts_mut(ptr, self.len)
}
} }
/// Creates a consuming iterator, that is, one that moves each value out of /// Creates a consuming iterator, that is, one that moves each value out of
@@ -1494,13 +1483,13 @@ impl<T> ops::IndexMut<ops::RangeFull> for Vec<T> {
#[cfg(stage0)] #[cfg(stage0)]
#[inline] #[inline]
fn index_mut(&mut self, _index: &ops::RangeFull) -> &mut [T] { fn index_mut(&mut self, _index: &ops::RangeFull) -> &mut [T] {
self.as_mut_slice() self
} }
#[cfg(not(stage0))] #[cfg(not(stage0))]
#[inline] #[inline]
fn index_mut(&mut self, _index: ops::RangeFull) -> &mut [T] { fn index_mut(&mut self, _index: ops::RangeFull) -> &mut [T] {
self.as_mut_slice() self
} }
} }
@@ -1519,7 +1508,13 @@ impl<T> ops::Deref for Vec<T> {
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
impl<T> ops::DerefMut for Vec<T> { impl<T> ops::DerefMut for Vec<T> {
fn deref_mut(&mut self) -> &mut [T] { self.as_mut_slice() } fn deref_mut(&mut self) -> &mut [T] {
unsafe {
let ptr = *self.ptr;
assume(!ptr.is_null());
slice::from_raw_parts_mut(ptr, self.len)
}
}
} }
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
@@ -1656,21 +1651,13 @@ impl<T: Ord> Ord for Vec<T> {
} }
} }
#[unstable(feature = "collections",
reason = "will be replaced by slice syntax")]
#[deprecated(since = "1.0.0", reason = "use &mut s[..] instead")]
#[allow(deprecated)] #[allow(deprecated)]
impl<T> AsSlice<T> for Vec<T> { impl<T> AsSlice<T> for Vec<T> {
/// Returns a slice into `self`. /// Deprecated: use `&mut s[..]` instead.
///
/// # Examples
///
/// ```
/// # #![feature(core)]
/// fn foo(slice: &[i32]) {}
///
/// let vec = vec![1, 2];
/// foo(vec.as_slice());
/// ```
#[inline] #[inline]
#[stable(feature = "rust1", since = "1.0.0")]
fn as_slice(&self) -> &[T] { fn as_slice(&self) -> &[T] {
self self
} }

View File

@@ -88,6 +88,9 @@ pub trait SliceExt {
fn len(&self) -> usize; fn len(&self) -> usize;
fn is_empty(&self) -> bool { self.len() == 0 } fn is_empty(&self) -> bool { self.len() == 0 }
fn get_mut<'a>(&'a mut self, index: usize) -> Option<&'a mut Self::Item>; fn get_mut<'a>(&'a mut self, index: usize) -> Option<&'a mut Self::Item>;
#[unstable(feature = "core",
reason = "will be replaced by slice syntax")]
#[deprecated(since = "1.0.0", reason = "use &mut s[..] instead")]
fn as_mut_slice<'a>(&'a mut self) -> &'a mut [Self::Item]; fn as_mut_slice<'a>(&'a mut self) -> &'a mut [Self::Item];
fn iter_mut<'a>(&'a mut self) -> IterMut<'a, Self::Item>; fn iter_mut<'a>(&'a mut self) -> IterMut<'a, Self::Item>;
fn first_mut<'a>(&'a mut self) -> Option<&'a mut Self::Item>; fn first_mut<'a>(&'a mut self) -> Option<&'a mut Self::Item>;
@@ -261,6 +264,9 @@ impl<T> SliceExt for [T] {
} }
#[inline] #[inline]
#[unstable(feature = "core",
reason = "will be replaced by slice syntax")]
#[deprecated(since = "1.0.0", reason = "use &mut s[..] instead")]
fn as_mut_slice(&mut self) -> &mut [T] { self } fn as_mut_slice(&mut self) -> &mut [T] { self }
#[cfg(stage0)] #[cfg(stage0)]

View File

@@ -101,7 +101,7 @@ pub struct Weighted<T> {
/// let mut items = vec!(Weighted { weight: 2, item: 'a' }, /// let mut items = vec!(Weighted { weight: 2, item: 'a' },
/// Weighted { weight: 4, item: 'b' }, /// Weighted { weight: 4, item: 'b' },
/// Weighted { weight: 1, item: 'c' }); /// Weighted { weight: 1, item: 'c' });
/// let wc = WeightedChoice::new(items.as_mut_slice()); /// let wc = WeightedChoice::new(&mut items[..]);
/// let mut rng = rand::thread_rng(); /// let mut rng = rand::thread_rng();
/// for _ in 0..16 { /// for _ in 0..16 {
/// // on average prints 'a' 4 times, 'b' 8 and 'c' twice. /// // on average prints 'a' 4 times, 'b' 8 and 'c' twice.