Trait std::slice::SliceIndex
1.28.0 · source · 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
用于索引操作的辅助 trait。
这个 trait 的实现必须 promise,如果 get_unchecked(_mut)
的参数是一个安全的引用,那么结果也是如此。
Required Associated Types§
Required Methods§
sourcefn get(self, slice: &T) -> Option<&Self::Output>
fn get(self, slice: &T) -> Option<&Self::Output>
slice_index_methods
)如果在边界内,则返回此位置输出的共享引用。
sourcefn get_mut(self, slice: &mut T) -> Option<&mut Self::Output>
fn get_mut(self, slice: &mut T) -> Option<&mut Self::Output>
slice_index_methods
)如果在边界内,则对此位置的输出返回一个可变引用。
sourceunsafe fn get_unchecked(self, slice: *const T) -> *const Self::Output
unsafe fn get_unchecked(self, slice: *const T) -> *const Self::Output
slice_index_methods
)返回此位置输出的共享引用,而不执行任何边界检查。
即使未使用所得的引用,使用越界索引或悬垂的 slice
指针调用此方法也是 [undefined 行为]。
sourceunsafe fn get_unchecked_mut(self, slice: *mut T) -> *mut Self::Output
unsafe fn get_unchecked_mut(self, slice: *mut T) -> *mut Self::Output
slice_index_methods
)返回此位置输出的变量引用,而不执行任何边界检查。
即使未使用所得的引用,使用越界索引或悬垂的 slice
指针调用此方法也是 [undefined 行为]。
Implementors§
1.20.0 (const: unstable) · source§impl SliceIndex<str> for Range<usize>
impl SliceIndex<str> for Range<usize>
使用语法 &self[begin .. end]
或 &mut self[begin .. end]
实现子字符串切片。
从字节范围 [begin,
end`) 返回给定字符串的切片。
此运算为 O(1)。
在 1.20.0 之前,Index
和 IndexMut
的直接实现仍支持这些索引操作。
Panics
如果 begin
或 end
未指向字符的起始字节偏移量 (由 is_char_boundary
定义),begin > end
或 end > len
,就会出现 panics。
Examples
let s = "Löwe 老虎 Léopard";
assert_eq!(&s[0 .. 1], "L");
assert_eq!(&s[1 .. 9], "öwe 老");
// 这些将是 panic:
// 字节 2 位于 `ö` 内:
// &s[2 ..3];
// byte 8 lies within `老` &s[1 ..
// 8];
// 字节 100 在字符串 &s[3 之外。
// 100];
Run1.20.0 (const: unstable) · source§impl SliceIndex<str> for RangeFrom<usize>
impl SliceIndex<str> for RangeFrom<usize>
使用语法 &self[begin ..]
或 &mut self[begin ..]
实现子字符串切片。
从字节范围 [begin
, len
) 中返回给定字符串的切片。
相当于 &self[begin .. len]
或 &mut self[begin .. len]
。
此运算为 O(1)。
在 1.20.0 之前,Index
和 IndexMut
的直接实现仍支持这些索引操作。
Panics
如果 begin
没有指向字符的起始字节偏移量 (由 is_char_boundary
定义),或者 begin > len
,就会出现 panics。
1.20.0 (const: unstable) · source§impl SliceIndex<str> for RangeFull
impl SliceIndex<str> for RangeFull
使用语法 &self[..]
或 &mut self[..]
实现子字符串切片。
返回整个字符串的切片,即返回 &self
或 &mut self
。相当于 &self[0 .. len]
或 &mut self[0 .. len]
.
与其他索引操作不同,此操作永远不能 panic。
此运算为 O(1)。
在 1.20.0 之前,Index
和 IndexMut
的直接实现仍支持这些索引操作。
等效于 &self[0 .. len]
或 &mut self[0 .. len]
。
1.26.0 (const: unstable) · source§impl SliceIndex<str> for RangeInclusive<usize>
impl SliceIndex<str> for RangeInclusive<usize>
使用语法 &self[begin ..= end]
或 &mut self[begin ..= end]
实现子字符串切片。
从字节范围 [begin
, end
] 返回给定字符串的切片。等效于 &self [begin .. end + 1]
或 &mut self[begin .. end + 1]
,除非 end
具有 usize
的最大值。
此运算为 O(1)。
Panics
如果 begin
没有指向字符的起始字节偏移量 (由 is_char_boundary
定义),如果 end
没有指向字符的结束字节偏移量 (end + 1
是起始字节偏移量或等于 len
),如果 begin > end
,或者如果 end >= len
,就会出现 panics。
1.20.0 (const: unstable) · source§impl SliceIndex<str> for RangeTo<usize>
impl SliceIndex<str> for RangeTo<usize>
使用语法 &self[.. end]
或 &mut self[.. end]
实现子字符串切片。
从字节范围 [0, end
) 中返回给定字符串的切片。
等效于 &self[0 .. end]
或 &mut self[0 .. end]
。
此运算为 O(1)。
在 1.20.0 之前,Index
和 IndexMut
的直接实现仍支持这些索引操作。
Panics
如果 end
没有指向字符的起始字节偏移量 (由 is_char_boundary
定义),或者 end > len
,就会出现 panics。
1.26.0 (const: unstable) · source§impl SliceIndex<str> for RangeToInclusive<usize>
impl SliceIndex<str> for RangeToInclusive<usize>
使用语法 &self[..= end]
或 &mut self[..= end]
实现子字符串切片。
从字节范围 [0, end
] 中返回给定字符串的切片。
等效于 &self [0 .. end + 1]
,除非 end
具有 usize
的最大值。
此运算为 O(1)。
Panics
如果 end
没有指向字符的结束字节偏移量 (end + 1
是 is_char_boundary
定义的起始字节偏移量,或者等于 len
),或者如果 end >= len
,就会出现 panics。