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

Метод strong_count

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

Синтаксис

Rc::strong_count(&rc)

Пример

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

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

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

1 2 3

Пример

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

use std::rc::Rc; fn main() { let rc = Rc::new("12345"); let rc2 = Rc::clone(&rc); println!("{}", Rc::strong_count(&rc)); drop(rc2); println!("{}", Rc::strong_count(&rc)); }

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

2 1

Пример

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

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

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

3 1

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

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