Структура 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
  • !RefUnwindSafe
  • Send
  • !Sync
  • Unpin
  • UnwindSafe

Стандартные реализации

  • Any
  • Borrow<T>
  • BorrowMut<T>
  • From<T>
  • Into<U>
  • TryFrom<U>
  • TryInto<U>