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

Метод upgrade

Метод upgrade пытается преобразовать слабую ссылку Weak в сильную ссылку Arc. Он возвращает Some(Arc), если объект ещё существует, и None, если объект уже был удалён. Метод не принимает параметров.

Слабая ссылка Weak не увеличивает счётчик сильных ссылок, поэтому не мешает освобождению памяти. Если все сильные ссылки Arc будут уничтожены, то метод upgrade вернёт None.

Синтаксис

weak.upgrade()

Пример

Давайте создадим сильную ссылку Arc, получим из неё слабую ссылку Weak и попробуем восстановить сильную ссылку:

use std::sync::{Arc, Weak}; fn main() { let arc = Arc::new(5); let weak: Weak<i32> = Arc::downgrade(&arc); let res = weak.upgrade(); match res { Some(value) => println!("{}", value), None => println!("None"), } }

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

5

Пример

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

use std::sync::{Arc, Weak}; fn main() { let arc = Arc::new(5); let weak: Weak<i32> = Arc::downgrade(&arc); drop(arc); let res = weak.upgrade(); match res { Some(value) => println!("{}", value), None => println!("None"), } }

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

None

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

  • класс Arc,
    который представляет атомарный счётчик ссылок
  • метод downgrade,
    который создаёт слабую ссылку из сильной
  • класс Weak,
    который представляет слабую ссылку на данные
  • метод upgrade,
    который восстанавливает сильную ссылку из слабой
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить