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

Функция new класса OnceLock

Функция new класса OnceLock создаёт новый пустой экземпляр OnceLock. Такой контейнер позволяет безопасно инициализировать значение ровно один раз, даже при доступе из нескольких потоков. Функция не принимает параметров и возвращает значение типа OnceLock<T>, где T - тип хранимого значения. Изначально контейнер пуст, и заполнить его можно с помощью методов set или get_or_init.

Синтаксис

OnceLock::<T>::new()

Пример

Давайте создадим новый пустой контейнер OnceLock для хранения целого числа:

use std::sync::OnceLock; fn main() { let lock: OnceLock<i32> = OnceLock::new(); println!("{:?}", lock.get()); }

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

None

Пример

Давайте создадим OnceLock и заполним его значением с помощью метода set:

use std::sync::OnceLock; fn main() { let lock: OnceLock<i32> = OnceLock::new(); let res = lock.set(12345); println!("{:?}", res); println!("{:?}", lock.get()); }

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

Ok(()) Some(12345)

Пример

Давайте создадим OnceLock и инициализируем его строкой через метод get_or_init:

use std::sync::OnceLock; fn main() { let lock: OnceLock<String> = OnceLock::new(); let res = lock.get_or_init(|| String::from("abcde")); println!("{}", res); }

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

"abcde"

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

  • класс OnceLock,
    который хранит значение, инициализируемое один раз
  • метод get,
    который возвращает ссылку на хранимое значение
  • метод get_or_init,
    который возвращает значение, инициализируя его при необходимости
  • класс Once,
    который гарантирует однократное выполнение инициализации
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить