pub unsafe trait SliceIndex<T: ?Sized>: Sealed {
type Output: ?Sized;
// Required methods
fn get(self, slice: &T) -> Option<&Self::Output>;
fn get_mut(self, slice: &mut T) -> Option<&mut Self::Output>;
unsafe fn get_unchecked(self, slice: *const T) -> *const Self::Output;
unsafe fn get_unchecked_mut(self, slice: *mut T) -> *mut Self::Output;
fn index(self, slice: &T) -> &Self::Output;
fn index_mut(self, slice: &mut T) -> &mut Self::Output;
}Expand description
A helper trait used for indexing operations.
Implementations of this trait have to promise that if the argument
to get_unchecked(_mut) is a safe reference, then so is the result.
Required Associated Types§
Required Methods§
Sourcefn get(self, slice: &T) -> Option<&Self::Output>
🔬This is a nightly-only experimental API. (slice_index_methods)
fn get(self, slice: &T) -> Option<&Self::Output>
slice_index_methods)Returns a shared reference to the output at this location, if in bounds.
Sourcefn get_mut(self, slice: &mut T) -> Option<&mut Self::Output>
🔬This is a nightly-only experimental API. (slice_index_methods)
fn get_mut(self, slice: &mut T) -> Option<&mut Self::Output>
slice_index_methods)Returns a mutable reference to the output at this location, if in bounds.
Sourceunsafe fn get_unchecked(self, slice: *const T) -> *const Self::Output
🔬This is a nightly-only experimental API. (slice_index_methods)
unsafe fn get_unchecked(self, slice: *const T) -> *const Self::Output
slice_index_methods)Returns a pointer to the output at this location, without performing any bounds checking.
Calling this method with an out-of-bounds index or a dangling slice pointer
is undefined behavior even if the resulting pointer is not used.
Sourceunsafe fn get_unchecked_mut(self, slice: *mut T) -> *mut Self::Output
🔬This is a nightly-only experimental API. (slice_index_methods)
unsafe fn get_unchecked_mut(self, slice: *mut T) -> *mut Self::Output
slice_index_methods)Returns a mutable pointer to the output at this location, without performing any bounds checking.
Calling this method with an out-of-bounds index or a dangling slice pointer
is undefined behavior even if the resulting pointer is not used.
Implementors§
1.20.0 (const: unstable) · Source§impl SliceIndex<str> for Range<usize>
Implements substring slicing with syntax &self[begin .. end] or &mut self[begin .. end].
impl SliceIndex<str> for Range<usize>
Implements substring slicing with syntax &self[begin .. end] or &mut self[begin .. end].
Returns a slice of the given string from the byte range
[begin, end).
This operation is O(1).
Prior to 1.20.0, these indexing operations were still supported by
direct implementation of Index and IndexMut.
§Panics
Panics if begin or end does not point to the starting byte offset of
a character (as defined by is_char_boundary), if begin > end, or if
end > len.
§Examples
1.20.0 (const: unstable) · Source§impl SliceIndex<str> for RangeFrom<usize>
Implements substring slicing with syntax &self[begin ..] or &mut self[begin ..].
impl SliceIndex<str> for RangeFrom<usize>
Implements substring slicing with syntax &self[begin ..] or &mut self[begin ..].
Returns a slice of the given string from the byte range [begin, len).
Equivalent to &self[begin .. len] or &mut self[begin .. len].
This operation is O(1).
Prior to 1.20.0, these indexing operations were still supported by
direct implementation of Index and IndexMut.
§Panics
Panics if begin does not point to the starting byte offset of
a character (as defined by is_char_boundary), or if begin > len.
1.20.0 (const: unstable) · Source§impl SliceIndex<str> for RangeTo<usize>
Implements substring slicing with syntax &self[.. end] or &mut self[.. end].
impl SliceIndex<str> for RangeTo<usize>
Implements substring slicing with syntax &self[.. end] or &mut self[.. end].
Returns a slice of the given string from the byte range [0, end).
Equivalent to &self[0 .. end] or &mut self[0 .. end].
This operation is O(1).
Prior to 1.20.0, these indexing operations were still supported by
direct implementation of Index and IndexMut.
§Panics
Panics if end does not point to the starting byte offset of a
character (as defined by is_char_boundary), or if end > len.
1.15.0 (const: unstable) · Source§impl<T> SliceIndex<[T]> for usize
The methods index and index_mut panic if the index is out of bounds.
impl<T> SliceIndex<[T]> for usize
The methods index and index_mut panic if the index is out of bounds.
1.15.0 (const: unstable) · Source§impl<T> SliceIndex<[T]> for Range<usize>
The methods index and index_mut panic if:
impl<T> SliceIndex<[T]> for Range<usize>
The methods index and index_mut panic if:
- the start of the range is greater than the end of the range or
- the end of the range is out of bounds.
1.15.0 (const: unstable) · Source§impl<T> SliceIndex<[T]> for RangeFrom<usize>
The methods index and index_mut panic if the start of the range is out of bounds.
impl<T> SliceIndex<[T]> for RangeFrom<usize>
The methods index and index_mut panic if the start of the range is out of bounds.
1.26.0 (const: unstable) · Source§impl<T> SliceIndex<[T]> for RangeInclusive<usize>
The methods index and index_mut panic if:
impl<T> SliceIndex<[T]> for RangeInclusive<usize>
The methods index and index_mut panic if:
- the end of the range is
usize::MAXor - the start of the range is greater than the end of the range or
- the end of the range is out of bounds.