Класс slice
Класс slice в Rust представляет собой срез - ссылку на непрерывную последовательность элементов, хранящуюся в другом контейнере, например в массиве или векторе. Срез не владеет данными, а лишь заимствует их, поэтому он описывается типом &[T] для неизменяемого среза и &mut [T] для изменяемого. Параметром тип T задаёт тип элементов, которые содержит срез. Срезы широко используются для передачи части коллекции в функции без копирования данных.
Синтаксис
&[T]
&mut [T]
Пример
Давайте создадим вектор и получим его срез с помощью диапазона:
fn main()
{
let vec = vec![1, 2, 3, 4, 5];
let slice = &vec[1..4];
println!("{:?}", slice);
}
Результат выполнения кода:
[2, 3, 4]
Пример
Давайте узнаем длину среза с помощью метода len:
fn main()
{
let vec = vec![1, 2, 3, 4, 5];
let slice = &vec[1..4];
println!("{}", slice.len());
}
Результат выполнения кода:
3
Пример
Давайте переберём элементы среза с помощью цикла:
fn main()
{
let vec = vec!["a", "b", "c", "d", "e"];
let slice = &vec[1..4];
for el in slice {
println!("{}", el);
}
}
Результат выполнения кода:
"b"
"c"
"d"