From d7c9bb4b688ff20a3fd1d4ff1a11bb4dcbdc2c47 Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Fri, 26 Jul 2013 20:48:56 -0400 Subject: vec: add mut_slice_{to,from} Closes #8066 --- src/libstd/vec.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src/libstd') diff --git a/src/libstd/vec.rs b/src/libstd/vec.rs index 87ac4037e8e..8dbae43689d 100644 --- a/src/libstd/vec.rs +++ b/src/libstd/vec.rs @@ -1656,6 +1656,8 @@ impl OwnedEqVector for ~[T] { #[allow(missing_doc)] pub trait MutableVector<'self, T> { fn mut_slice(self, start: uint, end: uint) -> &'self mut [T]; + fn mut_slice_from(self, start: uint) -> &'self mut [T]; + fn mut_slice_to(self, end: uint) -> &'self mut [T]; fn mut_iter(self) -> VecMutIterator<'self, T>; fn mut_rev_iter(self) -> VecMutRevIterator<'self, T>; @@ -1709,6 +1711,27 @@ impl<'self,T> MutableVector<'self, T> for &'self mut [T] { } } + /** + * Returns a slice of self from `start` to the end of the vec. + * + * Fails when `start` points outside the bounds of self. + */ + #[inline] + fn mut_slice_from(self, start: uint) -> &'self mut [T] { + let len = self.len(); + self.mut_slice(start, len) + } + + /** + * Returns a slice of self from the start of the vec to `end`. + * + * Fails when `end` points outside the bounds of self. + */ + #[inline] + fn mut_slice_to(self, end: uint) -> &'self mut [T] { + self.mut_slice(0, end) + } + #[inline] fn mut_split(self, mid: uint) -> (&'self mut [T], &'self mut [T]) { unsafe { -- cgit 1.4.1-3-g733a5