РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
307 of 1245 menu

Метод 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,
    который представляет класс срезов и его методы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить