diff options
| author | Manish Goregaokar <manishsmail@gmail.com> | 2016-03-12 02:41:27 +0530 |
|---|---|---|
| committer | Manish Goregaokar <manishsmail@gmail.com> | 2016-03-12 06:47:57 +0530 |
| commit | 667dcebaf9dcbb896da57e7c07bf80759a5dad10 (patch) | |
| tree | 6a7b65d471966a322c22d8251438e9806f9863b5 /src/libcore | |
| parent | 249ca830963026ec580c6701c7e211742efcf10d (diff) | |
| parent | bfffe6d9d25d52f75705b5ebcc741b6844c2aa81 (diff) | |
| download | rust-667dcebaf9dcbb896da57e7c07bf80759a5dad10.tar.gz rust-667dcebaf9dcbb896da57e7c07bf80759a5dad10.zip | |
Rollup merge of #32183 - bluss:doc-index, r=alexcrichton
Clarify doc for slice slicing (Index impls) Clarify doc for slice slicing (Index impls) This is a follow up for PR #32099 and #32057
Diffstat (limited to 'src/libcore')
| -rw-r--r-- | src/libcore/slice.rs | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/libcore/slice.rs b/src/libcore/slice.rs index e59e8567d5b..233e556b27e 100644 --- a/src/libcore/slice.rs +++ b/src/libcore/slice.rs @@ -535,6 +535,16 @@ fn slice_index_order_fail(index: usize, end: usize) -> ! { // FIXME implement indexing with inclusive ranges +/// Implements slicing with syntax `&self[begin .. end]`. +/// +/// Returns a slice of self for the index range [`begin`..`end`). +/// +/// This operation is `O(1)`. +/// +/// # Panics +/// +/// Requires that `begin <= end` and `end <= self.len()`, +/// otherwise slicing will panic. #[stable(feature = "rust1", since = "1.0.0")] impl<T> ops::Index<ops::Range<usize>> for [T] { type Output = [T]; @@ -554,6 +564,13 @@ impl<T> ops::Index<ops::Range<usize>> for [T] { } } } + +/// Implements slicing with syntax `&self[.. end]`. +/// +/// Returns a slice of self from the beginning until but not including +/// the index `end`. +/// +/// Equivalent to `&self[0 .. end]` #[stable(feature = "rust1", since = "1.0.0")] impl<T> ops::Index<ops::RangeTo<usize>> for [T] { type Output = [T]; @@ -563,6 +580,12 @@ impl<T> ops::Index<ops::RangeTo<usize>> for [T] { self.index(0 .. index.end) } } + +/// Implements slicing with syntax `&self[begin ..]`. +/// +/// Returns a slice of self from and including the index `begin` until the end. +/// +/// Equivalent to `&self[begin .. self.len()]` #[stable(feature = "rust1", since = "1.0.0")] impl<T> ops::Index<ops::RangeFrom<usize>> for [T] { type Output = [T]; @@ -572,6 +595,12 @@ impl<T> ops::Index<ops::RangeFrom<usize>> for [T] { self.index(index.start .. self.len()) } } + +/// Implements slicing with syntax `&self[..]`. +/// +/// Returns a slice of the whole slice. This operation can not panic. +/// +/// Equivalent to `&self[0 .. self.len()]` #[stable(feature = "rust1", since = "1.0.0")] impl<T> ops::Index<RangeFull> for [T] { type Output = [T]; @@ -608,6 +637,16 @@ impl<T> ops::Index<ops::RangeToInclusive<usize>> for [T] { } } +/// Implements mutable slicing with syntax `&mut self[begin .. end]`. +/// +/// Returns a slice of self for the index range [`begin`..`end`). +/// +/// This operation is `O(1)`. +/// +/// # Panics +/// +/// Requires that `begin <= end` and `end <= self.len()`, +/// otherwise slicing will panic. #[stable(feature = "rust1", since = "1.0.0")] impl<T> ops::IndexMut<ops::Range<usize>> for [T] { #[inline] @@ -625,6 +664,13 @@ impl<T> ops::IndexMut<ops::Range<usize>> for [T] { } } } + +/// Implements mutable slicing with syntax `&mut self[.. end]`. +/// +/// Returns a slice of self from the beginning until but not including +/// the index `end`. +/// +/// Equivalent to `&mut self[0 .. end]` #[stable(feature = "rust1", since = "1.0.0")] impl<T> ops::IndexMut<ops::RangeTo<usize>> for [T] { #[inline] @@ -632,6 +678,12 @@ impl<T> ops::IndexMut<ops::RangeTo<usize>> for [T] { self.index_mut(0 .. index.end) } } + +/// Implements mutable slicing with syntax `&mut self[begin ..]`. +/// +/// Returns a slice of self from and including the index `begin` until the end. +/// +/// Equivalent to `&mut self[begin .. self.len()]` #[stable(feature = "rust1", since = "1.0.0")] impl<T> ops::IndexMut<ops::RangeFrom<usize>> for [T] { #[inline] @@ -640,6 +692,12 @@ impl<T> ops::IndexMut<ops::RangeFrom<usize>> for [T] { self.index_mut(index.start .. len) } } + +/// Implements mutable slicing with syntax `&mut self[..]`. +/// +/// Returns a slice of the whole slice. This operation can not panic. +/// +/// Equivalent to `&mut self[0 .. self.len()]` #[stable(feature = "rust1", since = "1.0.0")] impl<T> ops::IndexMut<RangeFull> for [T] { #[inline] |
