Function core::slice::range

source ·
pub fn range<R>(range: R, bounds: RangeTo<usize>) -> Range<usize> where
    R: RangeBounds<usize>,
🔬This is a nightly-only experimental API. (slice_range #76393)
Expand description

执行范围的边界检查。

对于切片,此方法类似于 Index::index,但是它返回的 Range 等效于 range。 您可以使用此方法将任何范围转换为 startend 值。

bounds 是用于边界检查的切片范围。 它应该是 RangeTo 范围,以切片的长度结尾。

对于给定范围的切片,返回的 Range 可以安全地传递到 slice::get_uncheckedslice::get_unchecked_mut

Panics

如果 range 越界,就会出现 panics。

Examples

#![feature(slice_range)]

use std::slice;

let v = [10, 40, 30];
assert_eq!(1..2, slice::range(1..2, ..v.len()));
assert_eq!(0..2, slice::range(..2, ..v.len()));
assert_eq!(1..3, slice::range(1.., ..v.len()));
Run

Index::index 将为 panic 时的 panics:

#![feature(slice_range)]

use std::slice;

let _ = slice::range(2..1, ..3);
Run
#![feature(slice_range)]

use std::slice;

let _ = slice::range(1..4, ..3);
Run
#![feature(slice_range)]

use std::slice;

let _ = slice::range(1..=usize::MAX, ..3);
Run