Skip to main content

ManagedRefMut

Struct ManagedRefMut 

Source
pub struct ManagedRefMut<T: ?Sized> { /* private fields */ }
Expand description

Exclusive handle to a value owned by a Managed, the runtime &mut T.

Can be reborrowed, both shared and exclusive, one level deeper.

Implementations§

Source§

impl<T: ?Sized> ManagedRefMut<T>

Source

pub fn new(data: &mut T, lifetime: LifetimeRefMut) -> Self

Pairs a mutable reference with an exclusive borrow of its lifetime.

Source

pub unsafe fn new_raw(data: *mut T, lifetime: LifetimeRefMut) -> Option<Self>

ManagedRefMut::new over a raw pointer. A null pointer yields None.

§Safety

data must stay valid and unaliased for as long as lifetime says it does, and lifetime must be the borrow state that guards it.

Source

pub fn make(data: &mut T) -> (Self, Lifetime)

Builds a handle to a plain mutable reference along with the lifetime that backs it.

The caller has to keep the returned Lifetime alive for at least as long as the handle.

Source

pub unsafe fn make_raw(data: *mut T) -> Option<(Self, Lifetime)>

ManagedRefMut::make over a raw pointer.

§Safety

data must stay valid and unaliased for as long as the returned handle lives.

Source

pub fn into_inner(self) -> (LifetimeRefMut, *mut T)

Splits into the borrow token and the pointer.

Source

pub fn into_dynamic(self) -> DynamicManagedRefMut

Erases the type, keeping the same claim.

Source

pub fn lifetime(&self) -> &LifetimeRefMut

Returns the borrow token.

Source

pub fn borrow(&self) -> Option<ManagedRef<T>>

Takes a shared handle nested under this one.

Source

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

Takes an exclusive handle nested under this one.

Source

pub fn lazy(&self) -> ManagedLazy<T>

Takes an unclaimed handle.

Source

pub fn read(&self) -> Option<ValueReadAccess<'_, T>>

Guards the value for reading, or returns None when it is written or the owner is gone.

Source

pub fn write(&mut self) -> Option<ValueWriteAccess<'_, T>>

Guards the value for writing, or returns None when it is accessed or the owner is gone.

Source

pub unsafe fn map<U>(self, f: impl FnOnce(&mut T) -> &mut U) -> ManagedRefMut<U>

Narrows this handle down to a part of the value, such as one field.

§Safety

f must return a reference into the same value, and the owner must still be alive.

Source

pub unsafe fn try_map<U>( self, f: impl FnOnce(&mut T) -> Option<&mut U>, ) -> Option<ManagedRefMut<U>>

ManagedRefMut::map that can decline.

§Safety

Same as ManagedRefMut::map.

Source

pub unsafe fn as_ptr(&self) -> Option<*const T>

Returns the pointer while the owner is alive, bypassing access checks.

§Safety

The caller takes over checking for conflicting access.

Source

pub unsafe fn as_mut_ptr(&mut self) -> Option<*mut T>

Returns the mutable pointer while the owner is alive, bypassing access checks.

§Safety

The caller takes over checking for conflicting access.

Trait Implementations§

Source§

impl<T> From<ManagedRefMut<T>> for ManagedValue<T>

Source§

fn from(value: ManagedRefMut<T>) -> Self

Converts to this type from the input type.
Source§

impl<T> Send for ManagedRefMut<T>
where T: Send + ?Sized,

Source§

impl<T> Sync for ManagedRefMut<T>
where T: Sync + ?Sized,

Source§

impl<T> TryFrom<ManagedValue<T>> for ManagedRefMut<T>

Source§

type Error = ()

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

fn try_from(value: ManagedValue<T>) -> Result<Self, Self::Error>

Performs the conversion.

Auto Trait Implementations§

§

impl<T> Freeze for ManagedRefMut<T>
where *mut T: Freeze, T: ?Sized,

§

impl<T> RefUnwindSafe for ManagedRefMut<T>

§

impl<T> Unpin for ManagedRefMut<T>
where *mut T: Unpin, T: ?Sized,

§

impl<T> UnsafeUnpin for ManagedRefMut<T>
where *mut T: UnsafeUnpin, T: ?Sized,

§

impl<T> UnwindSafe for ManagedRefMut<T>
where *mut T: UnwindSafe, T: ?Sized,

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> Finalize for T

Source§

unsafe fn finalize_raw(data: *mut ())

Drops the value stored at data in place. 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.