Метод clone класса Arc
Метод clone класса Arc создает
новую сильную ссылку на те же данные, что и
исходный указатель. При вызове метода атомарный
счетчик сильных ссылок увеличивается на единицу.
Метод не принимает параметров и возвращает новый
указатель Arc, который указывает на ту же
область памяти.
Синтаксис
arc.clone()
Пример
Давайте создадим указатель Arc и клонируем
его, а затем проверим счетчик сильных ссылок:
use std::sync::Arc;
fn main()
{
let arc1 = Arc::new(12345);
let arc2 = arc1.clone();
println!("arc1 = {}", arc1);
println!("arc2 = {}", arc2);
println!("strong count = {}", Arc::strong_count(&arc1));
}
Результат выполнения кода:
arc1 = 12345
arc2 = 12345
strong count = 2
Пример
Давайте клонируем указатель Arc несколько
раз и передадим копии в разные переменные:
use std::sync::Arc;
fn main()
{
let arc1 = Arc::new("abcde");
let arc2 = arc1.clone();
let arc3 = Arc::clone(&arc1);
println!("arc1 = {}", arc1);
println!("arc2 = {}", arc2);
println!("arc3 = {}", arc3);
println!("strong count = {}", Arc::strong_count(&arc1));
}
Результат выполнения кода:
arc1 = abcde
arc2 = abcde
arc3 = abcde
strong count = 3
Смотрите также
-
класс
Arc,
который представляет собой потокобезопасный указатель с подсчетом ссылок -
метод
new,
который создает новый указатель Arc -
метод
try_unwrap,
который пытается извлечь значение, если Arc является единственным владельцем -
метод
downgrade,
который создает слабую ссылку Weak на данные