Метод 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]