Function std::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

Performs bounds-checking of a range.

This method is similar to Index::index for slices, but it returns a Range equivalent to range. You can use this method to turn any range into start and end values.

bounds is the range of the slice to use for bounds-checking. It should be a RangeTo range that ends at the length of the slice.

The returned Range is safe to pass to slice::get_unchecked and slice::get_unchecked_mut for slices with the given range.

Panics

Panics if range would be out of bounds.

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

Panics when Index::index would panic:

#![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