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

Метод clone класса Rc

Метод clone класса Rc создает новую умную ссылку на те же данные, увеличивая счетчик сильных ссылок (strong_count) на единицу. Параметров метод не принимает. Возвращает новую копию Rc, которая указывает на те же данные, что и исходный указатель. Данные не копируются, копируется только указатель и увеличивается счетчик ссылок.

Синтаксис

rc.clone()

Пример

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

use std::rc::Rc; fn main() { let rc1 = Rc::new(5); println!("Before clone: {}", Rc::strong_count(&rc1)); let rc2 = rc1.clone(); println!("After clone: {}", Rc::strong_count(&rc1)); println!("rc2 value: {}", rc2); }

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

Before clone: 1 After clone: 2 rc2 value: 5

Пример

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

use std::rc::Rc; fn main() { let rc1 = Rc::new("abcde"); let rc2 = rc1.clone(); let rc3 = rc1.clone(); println!("Count: {}", Rc::strong_count(&rc1)); println!("rc2: {}", rc2); println!("rc3: {}", rc3); }

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

Count: 3 rc2: abcde rc3: abcde

Пример

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

use std::rc::Rc; fn main() { let rc1 = Rc::new(10); { let rc2 = rc1.clone(); println!("Inside block: {}", Rc::strong_count(&rc1)); } println!("Outside block: {}", Rc::strong_count(&rc1)); }

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

Inside block: 2 Outside block: 1

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

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