Skip to main content

DynamicManagedRef

Struct DynamicManagedRef 

Source
pub struct DynamicManagedRef { /* private fields */ }
Expand description

Shared handle to a value whose type is only known at runtime.

The ManagedRef counterpart for script values.

Implementations§

Source§

impl DynamicManagedRef

Source

pub fn new<T: ?Sized>(data: &T, lifetime: LifetimeRef) -> Self

Pairs a reference with a shared borrow taken from its lifetime.

Source

pub unsafe fn new_raw( type_hash: TypeHash, lifetime: LifetimeRef, data: *const u8, ) -> Option<Self>

DynamicManagedRef::new for a type only known at runtime. A null pointer yields None.

§Safety

data must point at a value of the type named by type_hash, and must stay valid for as long as lifetime says it does.

Source

pub fn make<T: ?Sized>(data: &T) -> (Self, Lifetime)

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

Source

pub fn into_inner(self) -> (TypeHash, LifetimeRef, *const u8)

Splits into type, borrow token and pointer.

Source

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

Recovers the typed handle, or gives self back on a type mismatch.

Source

pub fn type_hash(&self) -> &TypeHash

Returns the type of the value.

Source

pub fn lifetime(&self) -> &LifetimeRef

Returns the borrow token.

Source

pub fn borrow(&self) -> Option<DynamicManagedRef>

Takes another shared handle to the same value.

Source

pub unsafe fn lazy_immutable(&self) -> DynamicManagedLazy

Turns this shared handle into an unclaimed one that can also write.

§Safety

The value was only borrowed immutably, so writing through the result is only sound when nothing else holds a shared reference to it.

Source

pub fn is<T>(&self) -> bool

Returns true when the value is a T.

Source

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

Guards the value for reading, or returns None on a type mismatch or while it is written.

Source

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

Narrows this handle down to a part of the value, retyping it to U.

§Safety

f must return a reference into the same value, and the owner must still be alive. Returns None when the value is not a T.

Source

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

DynamicManagedRef::map that can decline.

§Safety

Same as DynamicManagedRef::map.

Source

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

Returns a typed pointer while the owner is alive.

§Safety

The caller takes over checking for conflicting access.

Source

pub unsafe fn as_ptr_raw(&self) -> Option<*const u8>

Returns the untyped pointer while the owner is alive.

§Safety

Neither the type nor conflicting access is checked.

Trait Implementations§

Source§

impl From<DynamicManagedRef> for DynamicManagedValue

Source§

fn from(value: DynamicManagedRef) -> Self

Converts to this type from the input type.
Source§

impl Send for DynamicManagedRef

Source§

impl Sync for DynamicManagedRef

Source§

impl TryFrom<DynamicManagedValue> for DynamicManagedRef

Source§

type Error = ()

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

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

Performs the conversion.

Auto Trait Implementations§

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.