Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
487 of 1246 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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить