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

Метод clone

Метод clone создаёт и возвращает новую копию значения, для которого он вызван. Он позволяет явно скопировать данные, не перемещая владение оригиналом. Параметров метод не принимает. Метод доступен для типов, реализующих трейт Clone.

Синтаксис

value.clone()

Пример

Давайте создадим строку и получим её копию с помощью метода clone:

fn main() { let s1 = String::from("abcde"); let s2 = s1.clone(); println!("{}", s1); println!("{}", s2); }

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

"abcde" "abcde"

Пример

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

fn main() { let s1 = String::from("abcde"); let mut s2 = s1.clone(); s2.push_str("12345"); println!("{}", s1); println!("{}", s2); }

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

"abcde" "abcde12345"

Пример

Давайте скопируем вектор с помощью метода clone:

fn main() { let v1 = vec![1, 2, 3, 4, 5]; let v2 = v1.clone(); println!("{:?}", v1); println!("{:?}", v2); }

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

[1, 2, 3, 4, 5] [1, 2, 3, 4, 5]

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

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