Struct rustc_data_structures::ivar::Ivar [] [src]

pub struct Ivar<T: Copy> {
    // some fields omitted
}
Unstable (rustc_private)

A write-once variable. When constructed, it is empty, and can only be set once.

Ivars ensure that data that can only be initialised once. A full implementation is used for concurrency and blocks on a read of an unfulfilled value. This implementation is more minimal and panics if you attempt to read the value before it has been set. It is also not Sync, but may be extended in the future to be usable as a true concurrency type.

The T: Copy bound is not strictly needed, but it is required by Cell (so removing it would require using UnsafeCell), and it suffices for the current purposes.

Methods

impl<T: Copy> Ivar<T>
[src]

fn new() -> Ivar<T>

fn get(&self) -> Option<T>

fn fulfill(&self, value: T)

fn is_fulfilled(&self) -> bool

fn unwrap(&self) -> T

Trait Implementations

impl<T: Copy + Debug> Debug for Ivar<T>
[src]

fn fmt(&self, f: &mut Formatter) -> Result

Formats the value using the given formatter.

impl<T: Copy> Clone for Ivar<T>
[src]

fn clone(&self) -> Ivar<T>

Returns a copy of the value. Read more

fn clone_from(&mut self, source: &Self)
1.0.0

Performs copy-assignment from source. Read more

Derived Implementations

impl<T: PartialEq + Copy> PartialEq for Ivar<T>
[src]

fn eq(&self, __arg_0: &Ivar<T>) -> bool

This method tests for self and other values to be equal, and is used by ==. Read more

fn ne(&self, __arg_0: &Ivar<T>) -> bool

This method tests for !=.