pub unsafe trait SliceIndex<T>: Sealedwhere
T: ?Sized,{
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.73.0 ยท Sourceยงimpl SliceIndex<str> for (Bound<usize>, Bound<usize>)
Implements substring slicing for arbitrary bounds.
impl SliceIndex<str> for (Bound<usize>, Bound<usize>)
Implements substring slicing for arbitrary bounds.
Returns a slice of the given string bounded by the byte indices provided by each bound.
This operation is O(1).
ยงPanics
Panics if begin
or end
(if it exists and once adjusted for
inclusion/exclusion) does not point to the starting byte offset of
a character (as defined by is_char_boundary
), if begin > end
, or if
end > len
.
1.20.0 ยท Sourceยงimpl SliceIndex<str> for std::ops::Range<usize>
Implements substring slicing with syntax &self[begin .. end]
or &mut self[begin .. end]
.
impl SliceIndex<str> for std::ops::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 ยท Sourceยงimpl SliceIndex<str> for std::ops::RangeFrom<usize>
Implements substring slicing with syntax &self[begin ..]
or &mut self[begin ..]
.
impl SliceIndex<str> for std::ops::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 ยท Sourceยงimpl SliceIndex<str> for RangeFull
Implements substring slicing with syntax &self[..]
or &mut self[..]
.
impl SliceIndex<str> for RangeFull
Implements substring slicing with syntax &self[..]
or &mut self[..]
.
Returns a slice of the whole string, i.e., returns &self
or &mut self
. Equivalent to &self[0 .. len]
or &mut self[0 .. len]
. Unlike
other indexing operations, this can never panic.
This operation is O(1).
Prior to 1.20.0, these indexing operations were still supported by
direct implementation of Index
and IndexMut
.
Equivalent to &self[0 .. len]
or &mut self[0 .. len]
.
1.26.0 ยท Sourceยงimpl SliceIndex<str> for std::ops::RangeInclusive<usize>
Implements substring slicing with syntax &self[begin ..= end]
or &mut self[begin ..= end]
.
impl SliceIndex<str> for std::ops::RangeInclusive<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
]. Equivalent to &self [begin .. end + 1]
or &mut self[begin .. end + 1]
, except if end
has the maximum value for
usize
.
This operation is O(1).
ยงPanics
Panics if begin
does not point to the starting byte offset of
a character (as defined by is_char_boundary
), if end
does not point
to the ending byte offset of a character (end + 1
is either a starting
byte offset or equal to len
), if begin > end
, or if end >= len
.
1.20.0 ยท 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.26.0 ยท Sourceยงimpl SliceIndex<str> for RangeToInclusive<usize>
Implements substring slicing with syntax &self[..= end]
or &mut self[..= end]
.
impl SliceIndex<str> for RangeToInclusive<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 + 1]
, except if end
has the maximum
value for usize
.
This operation is O(1).
ยงPanics
Panics if end
does not point to the ending byte offset of a character
(end + 1
is either a starting byte offset as defined by
is_char_boundary
, or equal to len
), or if end >= len
.
Sourceยงimpl SliceIndex<str> for std::range::RangeInclusive<usize>
impl SliceIndex<str> for std::range::RangeInclusive<usize>
Sourceยงimpl SliceIndex<ByteStr> for std::ops::RangeInclusive<usize>
impl SliceIndex<ByteStr> for std::ops::RangeInclusive<usize>
Sourceยงimpl SliceIndex<ByteStr> for RangeToInclusive<usize>
impl SliceIndex<ByteStr> for RangeToInclusive<usize>
Sourceยงimpl SliceIndex<ByteStr> for std::range::RangeInclusive<usize>
impl SliceIndex<ByteStr> for std::range::RangeInclusive<usize>
1.15.0 ยท 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 ยท Sourceยงimpl<T> SliceIndex<[T]> for std::ops::Range<usize>
The methods index
and index_mut
panic if:
impl<T> SliceIndex<[T]> for std::ops::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 ยท Sourceยงimpl<T> SliceIndex<[T]> for std::ops::RangeFrom<usize>
The methods index
and index_mut
panic if the start of the range is out of bounds.
impl<T> SliceIndex<[T]> for std::ops::RangeFrom<usize>
The methods index
and index_mut
panic if the start of the range is out of bounds.
1.26.0 ยท Sourceยงimpl<T> SliceIndex<[T]> for std::ops::RangeInclusive<usize>
The methods index
and index_mut
panic if:
impl<T> SliceIndex<[T]> for std::ops::RangeInclusive<usize>
The methods index
and index_mut
panic if:
- the end of the range is
usize::MAX
or - 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 ยท Sourceยงimpl<T> SliceIndex<[T]> for RangeTo<usize>
The methods index
and index_mut
panic if the end of the range is out of bounds.
impl<T> SliceIndex<[T]> for RangeTo<usize>
The methods index
and index_mut
panic if the end of the range is out of bounds.
1.26.0 ยท Sourceยงimpl<T> SliceIndex<[T]> for RangeToInclusive<usize>
The methods index
and index_mut
panic if the end of the range is out of bounds.
impl<T> SliceIndex<[T]> for RangeToInclusive<usize>
The methods index
and index_mut
panic if the end of the range is out of bounds.