Skip to main content

ManagedLazy

Struct ManagedLazy 

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

Unclaimed handle to a value owned by a Managed.

Holding one blocks nobody, and it can be cloned freely. Every access is checked when it happens. This is the handle a script variable holds, because such a variable is read and written at any point, with no Rust borrow to model it.

Implementations§

Source§

impl<T: ?Sized> ManagedLazy<T>

Source

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

Pairs a mutable reference with an unclaimed handle to its lifetime.

Source

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

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

§Safety

data must stay valid 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)>

ManagedLazy::make over a raw pointer.

§Safety

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

Source

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

Splits into the lifetime handle and the pointer.

Source

pub fn into_dynamic(self) -> DynamicManagedLazy

Erases the type, keeping the same handle.

Source

pub fn lifetime(&self) -> &LifetimeLazy

Returns the lifetime handle.

Source

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

Upgrades to a shared handle that holds its claim.

Source

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

Upgrades to an exclusive handle that holds its claim.

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(&self) -> Option<ValueWriteAccess<'_, T>>

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

Takes &self, since a lazy handle claims nothing of its own.

Source

pub unsafe fn map<U>(self, f: impl FnOnce(&mut T) -> &mut U) -> ManagedLazy<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<ManagedLazy<U>>

ManagedLazy::map that can decline.

§Safety

Same as ManagedLazy::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(&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: ?Sized> Clone for ManagedLazy<T>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T> From<ManagedLazy<T>> for ManagedValue<T>

Source§

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

Converts to this type from the input type.
Source§

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

Source§

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

Source§

impl<T> TryFrom<ManagedValue<T>> for ManagedLazy<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 ManagedLazy<T>
where *mut T: Freeze, T: ?Sized,

§

impl<T> RefUnwindSafe for ManagedLazy<T>

§

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

§

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

§

impl<T> UnwindSafe for ManagedLazy<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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.