Struct Pass

Source
pub struct Pass<'a>(/* private fields */);
Expand description

A key for reading/writing to RwData

This key is necessary in order to prevent breakage of the number one rule of Rust: any number of shared references, or one exclusive reference.

When you call RwData::read, any call to RwData::write may end up breaking this rule, and vice-versa, which is why this struct is necessary.

One downside of this approach is that it is even more restrictive than Rust’s rule of thumb, since that one is enforced on individual instances, while this one is enforced on all RwDatas. This (as far as i know) cannot be circumvented, as a more advanced compile time checker (that distinguishes RwData<T>s of different Ts, for example) does not seem feasible without the use of unfinished features, which I am not willing to use.

Do note that you can still ignore this if you want, by use of read_unsafe and write_unsafe, but this might cause a panic in Duat because of the RefCells under the hood.

Auto Trait Implementations§

§

impl<'a> Freeze for Pass<'a>

§

impl<'a> !RefUnwindSafe for Pass<'a>

§

impl<'a> !Send for Pass<'a>

§

impl<'a> !Sync for Pass<'a>

§

impl<'a> Unpin for Pass<'a>

§

impl<'a> !UnwindSafe for Pass<'a>

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> 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, 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.