Skip to main content

Userdata

Struct Userdata 

Source
pub struct Userdata { /* private fields */ }

Implementations§

Source§

impl Userdata

Source

pub const unsafe fn from_raw(raw: NonNull<RawUserdata>) -> Self

Constructs a non-owning handle from a VM userdata record.

§Safety

raw must address a live RawUserdata owned by the VM in which this handle will be used. The handle does not root the userdata or extend its lifetime.

Source

pub fn allocation_size_for_payload_len(payload_len: usize) -> Option<usize>

Source

pub unsafe fn metatable(&self) -> Option<Table>

Returns this userdata’s metatable handle, if present.

§Safety

The userdata and its owning VM must be live. The returned handle is non-owning and is invalidated when the metatable is freed.

Source

pub unsafe fn set_metatable(&self, metatable: Option<Table>)

Replaces this userdata’s metatable pointer.

§Safety

The userdata must be live, and metatable, when present, must belong to the same VM. The caller must maintain the VM’s GC barrier protocol.

Source

pub fn total_payload_len(&self) -> usize

Source

pub const fn data_ptr(&self) -> *const u8

Source

pub const unsafe fn data_mut_ptr(&self) -> *mut u8

Returns the mutable address of this userdata’s inline payload.

§Safety

The userdata must be live, and the caller must enforce bounds and aliasing for every access through the returned pointer.

Source

pub unsafe fn set_inline_destructor( &self, requested_payload_len: usize, destructor: LuaInlineDestructor, )

Stores the inline destructor following the requested payload.

§Safety

This must be an inline-destructor userdata whose allocation contains a destructor-sized trailer immediately after requested_payload_len.

Source

pub unsafe fn inline_destructor(&self) -> LuaInlineDestructor

Loads the destructor stored after an inline-destructor payload.

§Safety

This must be a live inline-destructor userdata whose payload trailer was initialized with a valid LuaInlineDestructor.

Source

pub unsafe fn allocation_size(&self) -> usize

Returns this userdata allocation’s full GC size.

§Safety

The userdata record must be live and its stored payload length must describe the allocation that contains it.

Trait Implementations§

Source§

impl AsRef<Userdata> for Userdata

Source§

fn as_ref(&self) -> &Userdata

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl Clone for Userdata

Source§

fn clone(&self) -> Userdata

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 Copy for Userdata

Source§

impl Eq for Userdata

Source§

impl From<Userdata> for GcObject

Source§

fn from(value: Userdata) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for Userdata

Source§

fn eq(&self, other: &Userdata) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl RawHandle for Userdata

Source§

type Raw = RawUserdata

Raw VM record addressed by this handle.
Source§

fn as_ptr(&self) -> *mut Self::Raw

Returns the record address without dereferencing it.
Source§

impl StructuralPartialEq for Userdata

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