Struct sync::one::Once
pub struct Once { // some fields omitted }
A type which can be used to run a one-time global initialization. This type
is unsafe to use because it is built on top of the Mutex
in this module.
It does not know whether the currently running task is in a green or native
context, and a blocking mutex should not be used under normal
circumstances on a green task.
Despite its unsafety, it is often useful to have a one-time initialization
routine run for FFI bindings or related external functionality. This type
can only be statically constructed with the ONCE_INIT
value.
Example
use sync::one::{Once, ONCE_INIT}; static mut START: Once = ONCE_INIT; unsafe { START.doit(|| { // run initialization here }); }
Methods
impl Once
fn doit(&self, f: ||)
Perform an initialization routine once and only once. The given closure
will be executed if this is the first time doit
has been called, and
otherwise the routine will not be invoked.
This method will block the calling os 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).