auto merge of #14750 : bachm/rust/master, r=alexcrichton
This adds the missing `get_mut` method to the `MutableVector` trait, and implements it for `&'a mut [T]`.
This commit is contained in:
commit
3851d68a27
@ -2034,6 +2034,16 @@ mod tests {
|
|||||||
assert!(xs == [1,2,0,4,3,0,0,6,5,0]);
|
assert!(xs == [1,2,0,4,3,0,0,6,5,0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_get_mut() {
|
||||||
|
let mut v = [0,1,2];
|
||||||
|
assert_eq!(v.get_mut(3), None);
|
||||||
|
v.get_mut(1).map(|e| *e = 7);
|
||||||
|
assert_eq!(v[1], 7);
|
||||||
|
let mut x = 2;
|
||||||
|
assert_eq!(v.get_mut(2), Some(&mut x));
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_mut_chunks() {
|
fn test_mut_chunks() {
|
||||||
let mut v = [0u8, 1, 2, 3, 4, 5, 6];
|
let mut v = [0u8, 1, 2, 3, 4, 5, 6];
|
||||||
|
@ -717,6 +717,9 @@ impl<'a, T: Ord> ImmutableOrdVector<T> for &'a [T] {
|
|||||||
/// Extension methods for vectors such that their elements are
|
/// Extension methods for vectors such that their elements are
|
||||||
/// mutable.
|
/// mutable.
|
||||||
pub trait MutableVector<'a, T> {
|
pub trait MutableVector<'a, T> {
|
||||||
|
/// Returns a mutable reference to the element at the given index,
|
||||||
|
/// or `None` if the index is out of bounds
|
||||||
|
fn get_mut(self, index: uint) -> Option<&'a mut T>;
|
||||||
/// Work with `self` as a mut slice.
|
/// Work with `self` as a mut slice.
|
||||||
/// Primarily intended for getting a &mut [T] from a [T, ..N].
|
/// Primarily intended for getting a &mut [T] from a [T, ..N].
|
||||||
fn as_mut_slice(self) -> &'a mut [T];
|
fn as_mut_slice(self) -> &'a mut [T];
|
||||||
@ -920,6 +923,11 @@ pub trait MutableVector<'a, T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<'a,T> MutableVector<'a, T> for &'a mut [T] {
|
impl<'a,T> MutableVector<'a, T> for &'a mut [T] {
|
||||||
|
#[inline]
|
||||||
|
fn get_mut(self, index: uint) -> Option<&'a mut T> {
|
||||||
|
if index < self.len() { Some(&mut self[index]) } else { None }
|
||||||
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn as_mut_slice(self) -> &'a mut [T] { self }
|
fn as_mut_slice(self) -> &'a mut [T] { self }
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user