Skip to main content

Managed

Struct Managed 

Source
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>

Source

pub fn new(data: T) -> Self

Takes ownership of a value with a fresh lifetime.

Source

pub fn new_raw(data: T, lifetime: Lifetime) -> Self

Takes ownership of a value with a lifetime prepared elsewhere.

Source

pub fn into_inner(self) -> (Lifetime, T)

Splits into the lifetime and the value, dropping no handles.

Source

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.

Source

pub fn renew(self) -> Self

Replaces the lifetime, killing every handle taken so far.

Source

pub fn lifetime(&self) -> &Lifetime

Returns the borrow state of this value.

Source

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

Guards the value for reading, or returns None while it is written.

Source

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

Guards the value for writing, or returns None while it is accessed.

Source

pub fn consume(self) -> Result<T, Self>

Takes the value out, or gives the box back while any access guard is live.

Source

pub fn move_into_ref(self, target: ManagedRefMut<T>) -> Result<(), Self>

Moves the value into the place target points at.

§Panics

Panics when target cannot be written.

Source

pub fn move_into_lazy(self, target: ManagedLazy<T>) -> Result<(), Self>

Moves the value into the place target points at.

§Panics

Panics when target cannot be written.

Source

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

Takes a shared handle, or returns None when an exclusive one is out.

Source

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

Takes an exclusive handle, or returns None when any handle is out.

Source

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

Takes an unclaimed handle.

Source

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.

Source

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.

Source

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

Managed::map that can decline, dropping the value when it does.

§Safety

Same as Managed::map.

Source

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.

Source

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.

Trait Implementations§

Source§

impl<T: Default> Default for Managed<T>

Source§

fn default() -> Managed<T>

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

impl<T> From<Managed<T>> for ManagedValue<T>

Source§

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

Converts to this type from the input type.
Source§

impl<T> TryFrom<ManagedValue<T>> for Managed<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 Managed<T>
where T: Freeze,

§

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

§

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

§

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

§

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

§

impl<T> UnsafeUnpin for Managed<T>
where T: UnsafeUnpin,

§

impl<T> UnwindSafe for Managed<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> 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> Initialize for T
where T: Default,

Source§

fn initialize() -> T

Returns the initial value of this type.
Source§

unsafe fn initialize_raw(data: *mut ())

Writes the initial value into already allocated memory. Read more
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.