Метод clone_from_slice
Метод clone_from_slice копирует все элементы
из исходного среза в целевой срез, клонируя каждый
элемент. Параметром метод принимает срез, из которого
нужно скопировать элементы. Длина исходного среза
должна совпадать с длиной целевого среза, иначе
программа запаникует. Метод вызывается на изменяемом
срезе и требует, чтобы тип элементов реализовывал
трейт Clone.
Синтаксис
slice.clone_from_slice(src)
Пример
Давайте скопируем элементы из одного массива в другой
с помощью метода clone_from_slice:
fn main()
{
let src = [1, 2, 3, 4, 5];
let mut dst = [0, 0, 0, 0, 0];
dst.clone_from_slice(&src);
println!("{:?}", dst);
}
Результат выполнения кода:
[1, 2, 3, 4, 5]
Пример
Давайте скопируем элементы из одного вектора в другой вектор с одинаковой длиной:
fn main()
{
let src = vec!["a", "b", "c", "d", "e"];
let mut dst = vec!["", "", "", "", ""];
dst.clone_from_slice(&src);
println!("{:?}", dst);
}
Результат выполнения кода:
["a", "b", "c", "d", "e"]
Пример
Давайте попробуем скопировать элементы из среза меньшей длины в срез большей длины. Такой код приведет к панике:
fn main()
{
let src = [1, 2, 3];
let mut dst = [0, 0, 0, 0, 0];
dst.clone_from_slice(&src);
println!("{:?}", dst);
}
Результат выполнения кода:
thread 'main' panicked at 'source slice length (3) does not match destination slice length (5)'
Смотрите также
-
метод
copy_from_slice,
который копирует элементы из одного среза в другой без клонирования -
метод
to_vec,
который создает вектор путем клонирования элементов среза -
метод
swap_with_slice,
который обменивает элементы двух срезов -
метод
slice,
который представляет класс срезов и его методы