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

Метод clone

Метод clone создает и возвращает глубокую копию значения. Он позволяет получить независимый экземпляр данных, который можно использовать отдельно от оригинала. Это особенно полезно, когда тип не реализует трейт Copy, и при присваивании или передаче в функцию происходит перемещение владения. Параметром метод не принимает никаких значений, а вызывается у самого объекта.

Синтаксис

value.clone()

Пример

Давайте создадим строку, клонируем ее, а затем изменим оригинал, чтобы убедиться, что копия осталась неизменной:

fn main() { let mut original = String::from("abcde"); let cloned = original.clone(); original.push_str("12345"); println!("Original: {}", original); println!("Cloned: {}", cloned); }

Результат выполнения кода:

Original: abcde12345 Cloned: abcde

Пример

Давайте склонируем вектор и изменим оригинал, добавив в него новый элемент:

fn main() { let mut vec1 = vec![1, 2, 3, 4, 5]; let vec2 = vec1.clone(); vec1.push(6); println!("Original: {:?}", vec1); println!("Cloned: {:?}", vec2); }

Результат выполнения кода:

Original: [1, 2, 3, 4, 5, 6] Cloned: [1, 2, 3, 4, 5]

Смотрите также

  • трейт Clone,
    который определяет возможность клонирования типа
  • трейт Copy,
    который позволяет копировать значение простым присваиванием
  • ключевое слово move,
    которое перемещает владение значением
  • концепция Ownership,
    которая описывает систему владения в Rust
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить