Метод chunks
Метод chunks разбивает срез на непересекающиеся части
заданной длины и возвращает итератор, элементами которого
являются срезы. Параметром метод принимает размер одной части.
Последняя часть может быть короче заданного размера, если
длина исходного среза не делится нацело на размер части.
Если размер части равен нулю, метод паникует.
Синтаксис
slice.chunks(chunk_size)
Пример
Давайте разобьём срез [1, 2, 3, 4, 5] на части
длиной 2 и выведем каждую часть:
fn main()
{
let arr = [1, 2, 3, 4, 5];
let chunks = arr.chunks(2);
for chunk in chunks {
println!("{:?}", chunk);
}
}
Результат выполнения кода:
[1, 2]
[3, 4]
[5]
Как видите, последняя часть содержит только один элемент,
так как длина исходного среза не делится нацело на 2.
Пример
Давайте соберём все части в вектор с помощью метода collect:
fn main()
{
let arr = [1, 2, 3, 4, 5, 6];
let res: Vec<_> = arr.chunks(3).collect();
println!("{:?}", res);
}
Результат выполнения кода:
[[1, 2, 3], [4, 5, 6]]
Пример
Давайте разобьём срез строк ["a", "b", "c", "d", "e"]
на части длиной 2:
fn main()
{
let arr = ["a", "b", "c", "d", "e"];
let chunks = arr.chunks(2);
for chunk in chunks {
println!("{:?}", chunk);
}
}
Результат выполнения кода:
["a", "b"]
["c", "d"]
["e"]
Смотрите также
-
метод
chunks_exact,
который разбивает срез на части строго заданной длины -
метод
windows,
который возвращает итератор по перекрывающимся окнам среза -
метод
split_at,
который делит срез на две части по указанному индексу -
метод
iter,
который возвращает итератор по элементам среза