Struct WriteOnlyRef

Source
pub struct WriteOnlyRef<'a, T: 'a> { /* private fields */ }
Expand description

A write-only reference with dropping non-volatile write access.

Implementations§

Source§

impl<'a, T: 'a> WriteOnlyRef<'a, T>

Source

pub unsafe fn from_ptr(data: *mut T) -> Self

Forms a write-only reference from a pointer.

§Safety

Behavior is undefined if any of the following conditions are violated:

  • data must be valid for reads for len * mem::size_of::<T>() many bytes, and it must be properly aligned. This means in particular:

    • data must be non-null and aligned. One reason for this is that enum layout optimizations may rely on references being aligned and non-null to distinguish them from other data.
  • The memory referenced by the returned reference must not be mutated for the duration of lifetime 'a, except inside an UnsafeCell.

§Caveat

The lifetime for the returned reference is inferred from its usage. To prevent accidental misuse, it’s suggested to tie the lifetime to whichever source lifetime is safe in the context, such as by providing a helper function taking the lifetime of a host guard for the reference, or by explicit annotation.

Trait Implementations§

Source§

impl<'a, T: 'a> From<&'a mut T> for WriteOnlyRef<'a, T>

Source§

fn from(borrow: &'a mut T) -> Self

Converts to this type from the input type.
Source§

impl<'a, T: 'a> Put<T> for WriteOnlyRef<'a, T>

Source§

fn put(&mut self, guard: T)

Puts the value the given value, dropping the old value.
Source§

impl<'a, T: 'a> Write<T> for WriteOnlyRef<'a, T>

Source§

fn write(&mut self, guard: T)

Writes the value the given value without dropping the old value.

Auto Trait Implementations§

§

impl<'a, T> Freeze for WriteOnlyRef<'a, T>

§

impl<'a, T> RefUnwindSafe for WriteOnlyRef<'a, T>
where T: RefUnwindSafe,

§

impl<'a, T> !Send for WriteOnlyRef<'a, T>

§

impl<'a, T> !Sync for WriteOnlyRef<'a, T>

§

impl<'a, T> Unpin for WriteOnlyRef<'a, T>

§

impl<'a, T> UnwindSafe for WriteOnlyRef<'a, T>
where T: RefUnwindSafe,

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.