Struct NonOption

Source
pub struct NonOption<T> { /* private fields */ }
Expand description

An Option that is not really optional (but is still kinda). Start by creating the object by calling invalid (probably as a field in a struct constructor) and setting a value by calling “set” with a parameter as soon as possible. Attempting to use an invalid NonOption will cause a panic, so make absolutely sure you’ve set it with a value before calling “get_ref”, “get_mut” etc.

NonOptions are useful when you have objects that refernce each other but cannot have these references set during initalisation (becuse one of the objects does not yet exist).

Implementations§

Source§

impl<T> NonOption<T>

Source

pub fn new(value: T) -> Self

Constructs a new NonOption object with a value.

Source

pub const fn invalid() -> Self

Constructs a new NonOption object with no value.

Source

pub fn new_rfc(value: T) -> RefCell<Self>

Source

pub fn invalid_rfc() -> RefCell<Self>

Source

pub fn get_ref(&self) -> &T

Source

pub fn get_mut(&mut self) -> &mut T

Source

pub fn try_get_ref(&self) -> Option<&T>

Source

pub fn try_get_mut(&mut self) -> Option<&mut T>

Source

pub fn is_valid(&self) -> bool

Source

pub fn is_invalid(&self) -> bool

Source

pub fn unwrap_or(self, default: T) -> T

Source

pub fn expect(self) -> T

Source

pub fn set(&mut self, value: T)

Trait Implementations§

Source§

impl<T> Clone for NonOption<T>
where T: Clone,

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<T> Debug for NonOption<T>
where T: Debug,

Source§

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

Formats the value using the given formatter. Read more
Source§

impl<T> Default for NonOption<T>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<T> Freeze for NonOption<T>
where T: Freeze,

§

impl<T> RefUnwindSafe for NonOption<T>
where T: RefUnwindSafe,

§

impl<T> Send for NonOption<T>
where T: Send,

§

impl<T> Sync for NonOption<T>
where T: Sync,

§

impl<T> Unpin for NonOption<T>
where T: Unpin,

§

impl<T> UnwindSafe for NonOption<T>
where T: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.