pub struct Managed<T> { /* private fields */ }Expand description
Owner of a value plus its runtime borrow state.
The value is stored inline, so this is just T with a lifetime attached.
Handles taken from it go dead when it is dropped. See the
module docs.
Implementations§
Source§impl<T> Managed<T>
impl<T> Managed<T>
Sourcepub fn new_raw(data: T, lifetime: Lifetime) -> Self
pub fn new_raw(data: T, lifetime: Lifetime) -> Self
Takes ownership of a value with a lifetime prepared elsewhere.
Sourcepub fn into_inner(self) -> (Lifetime, T)
pub fn into_inner(self) -> (Lifetime, T)
Splits into the lifetime and the value, dropping no handles.
Sourcepub fn into_dynamic(self) -> Result<DynamicManaged, Self>
pub fn into_dynamic(self) -> Result<DynamicManaged, Self>
Moves the value into a type-erased box, giving self back when the
allocation fails.
The lifetime is not carried over, so handles taken so far go dead.
Sourcepub fn read(&self) -> Option<ValueReadAccess<'_, T>>
pub fn read(&self) -> Option<ValueReadAccess<'_, T>>
Guards the value for reading, or returns None while it is written.
Sourcepub fn write(&mut self) -> Option<ValueWriteAccess<'_, T>>
pub fn write(&mut self) -> Option<ValueWriteAccess<'_, T>>
Guards the value for writing, or returns None while it is accessed.
Sourcepub fn consume(self) -> Result<T, Self>
pub fn consume(self) -> Result<T, Self>
Takes the value out, or gives the box back while any access guard is live.
Sourcepub fn move_into_ref(self, target: ManagedRefMut<T>) -> Result<(), Self>
pub fn move_into_ref(self, target: ManagedRefMut<T>) -> Result<(), Self>
Sourcepub fn move_into_lazy(self, target: ManagedLazy<T>) -> Result<(), Self>
pub fn move_into_lazy(self, target: ManagedLazy<T>) -> Result<(), Self>
Sourcepub fn borrow(&self) -> Option<ManagedRef<T>>
pub fn borrow(&self) -> Option<ManagedRef<T>>
Takes a shared handle, or returns None when an exclusive one is out.
Sourcepub fn borrow_mut(&mut self) -> Option<ManagedRefMut<T>>
pub fn borrow_mut(&mut self) -> Option<ManagedRefMut<T>>
Takes an exclusive handle, or returns None when any handle is out.
Sourcepub fn lazy(&mut self) -> ManagedLazy<T>
pub fn lazy(&mut self) -> ManagedLazy<T>
Takes an unclaimed handle.
Sourcepub unsafe fn lazy_immutable(&self) -> ManagedLazy<T>
pub unsafe fn lazy_immutable(&self) -> ManagedLazy<T>
Managed::lazy from a shared reference.
§Safety
The returned handle can write to a value the caller only borrowed
immutably. Only use it when nothing else holds a &T to it.
Sourcepub unsafe fn map<U>(self, f: impl FnOnce(T) -> U) -> Managed<U>
pub unsafe fn map<U>(self, f: impl FnOnce(T) -> U) -> Managed<U>
Replaces the value with one built from it, under a fresh lifetime.
§Safety
Handles taken so far are not checked before the value is moved out, and they go dead. Nothing may be accessing the value.
Sourcepub unsafe fn as_ptr(&self) -> *const T
pub unsafe fn as_ptr(&self) -> *const T
Returns a pointer to the value, bypassing the borrow state.
§Safety
The caller takes over checking for conflicting access, and must not outlive this box.
Sourcepub unsafe fn as_mut_ptr(&mut self) -> *mut T
pub unsafe fn as_mut_ptr(&mut self) -> *mut T
Returns a mutable pointer to the value, bypassing the borrow state.
§Safety
The caller takes over checking for conflicting access, and must not outlive this box.