Структура OnceState
Описание: Состояние, передаваемое в параметр замыкания Once::call_once_force(). Это состояние можно использовать для проверки статуса отравления (poison status) Once.
Стабильность: 1.0.0
Методы
is_poisoned (стабильность: 1.51.0)
#![allow(unused)] fn main() { pub fn is_poisoned(&self) -> bool }
Возвращает true, если связанный Once был отравлен до вызова замыкания, переданного в Once::call_once_force().
Примеры
Отравленный Once:
#![allow(unused)] fn main() { use std::sync::Once; use std::thread; static INIT: Once = Once::new(); // отравляем once let handle = thread::spawn(|| { INIT.call_once(|| panic!()); }); assert!(handle.join().is_err()); INIT.call_once_force(|state| { assert!(state.is_poisoned()); }); }
Неотравленный Once:
#![allow(unused)] fn main() { use std::sync::Once; static INIT: Once = Once::new(); INIT.call_once_force(|state| { assert!(!state.is_poisoned()); }); }
Реализации трейтов
Debug (стабильность: 1.16.0)
Реализует форматирование для отладки.
Автоматические реализации трейтов
!Freeze!RefUnwindSafeSend!SyncUnpinUnwindSafe
Стандартные реализации
AnyBorrow<T>BorrowMut<T>From<T>Into<U>TryFrom<U>TryInto<U>