[][src]Struct spin::Once

pub struct Once<T> { /* fields omitted */ }

A synchronization primitive which can be used to run a one-time global initialization. Unlike its std equivalent, this is generalized so that the closure returns a value and it is stored. Once therefore acts something like a future, too.

Examples

use spin;

static START: spin::Once<()> = spin::Once::new();

START.call_once(|| {
    // run initialization here
});

Methods

impl<T> Once<T>
[src]

Initialization constant of Once.

Creates a new Once value.

Performs an initialization routine once and only once. The given closure will be executed if this is the first time call_once has been called, and otherwise the routine will not be invoked.

This method will block the calling thread if another initialization routine is currently running.

When this function returns, it is guaranteed that some initialization has run and completed (it may not be the closure specified). The returned pointer will point to the result from the closure that was run.

Examples

use spin;

static INIT: spin::Once<usize> = spin::Once::new();

fn get_cached_val() -> usize {
    *INIT.call_once(expensive_computation)
}

fn expensive_computation() -> usize {
    // ...
}

Returns a pointer iff the Once was previously initialized

Like try, but will spin if the Once is in the process of being initialized

Trait Implementations

impl<T: Debug> Debug for Once<T>
[src]

impl<T: Send> Send for Once<T>
[src]

impl<T: Send + Sync> Sync for Once<T>
[src]

Blanket Implementations

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

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

impl<T> From for T
[src]

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

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

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

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

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

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