[][src]Struct rustc_data_structures::sync::Once

pub struct Once<T>(Lock<Option<T>>, PhantomData<T>);
⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

A type whose inner value can be written once and then will stay read-only

Methods

impl<T> Once<T>[src]

pub fn new() -> Self[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Creates an Once value which is uninitialized

pub fn into_inner(self) -> Option<T>[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Consumes the value and returns Some(T) if it was initialized

pub fn try_set(&self, value: T) -> Option<T>[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Tries to initialize the inner value to value. Returns None if the inner value was uninitialized and value was consumed setting it otherwise if the inner value was already set it returns value back to the caller

pub fn try_set_same(&self, value: T) -> Option<T> where
    T: Eq
[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Tries to initialize the inner value to value. Returns None if the inner value was uninitialized and value was consumed setting it otherwise if the inner value was already set it asserts that value is equal to the inner value and then returns value back to the caller

pub fn set(&self, value: T)[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Tries to initialize the inner value to value and panics if it was already initialized

Important traits for &'_ mut I
pub fn init_locking<F: FnOnce() -> T>(&self, f: F) -> &T[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Initializes the inner value if it wasn't already done by calling the provided closure. It ensures that no-one else can access the value in the mean time by holding a lock for the duration of the closure. A reference to the inner value is returned.

pub fn init_nonlocking<F: FnOnce() -> T>(&self, f: F) -> Option<T>[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Tries to initialize the inner value by calling the closure without ensuring that no-one else can access it. This mean when this is called from multiple threads, multiple closures may concurrently be computing a value which the inner value should take. Only one of these closures are used to actually initialize the value. If some other closure already set the value, we return the value our closure computed wrapped in a Option. If our closure set the value, None is returned. If the value is already initialized, the closure is not called and None is returned.

pub fn init_nonlocking_same<F: FnOnce() -> T>(&self, f: F) -> Option<T> where
    T: Eq
[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Tries to initialize the inner value by calling the closure without ensuring that no-one else can access it. This mean when this is called from multiple threads, multiple closures may concurrently be computing a value which the inner value should take. Only one of these closures are used to actually initialize the value. If some other closure already set the value, we assert that it our closure computed a value equal to the value already set and then we return the value our closure computed wrapped in a Option. If our closure set the value, None is returned. If the value is already initialized, the closure is not called and None is returned.

pub fn try_get(&self) -> Option<&T>[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Tries to get a reference to the inner value, returns None if it is not yet initialized

Important traits for &'_ mut I
pub fn get(&self) -> &T[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Gets reference to the inner value, panics if it is not yet initialized

Important traits for &'_ mut I
pub fn borrow(&self) -> &T[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Gets reference to the inner value, panics if it is not yet initialized

Auto Trait Implementations

impl<T> !RefUnwindSafe for Once<T>

impl<T> Send for Once<T> where
    T: Send

impl<T> !Sync for Once<T>

impl<T> Unpin for Once<T> where
    T: Unpin

impl<T> UnwindSafe for Once<T> where
    T: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<'a, T> Captures<'a> for T where
    T: ?Sized
[src]

impl<T> Erased for T[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<E> SpecializationError for E[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.