pub struct LuaUserdata { /* private fields */ }Expand description
Userdata - arbitrary Rust data with optional metatable.
Uses Box<dyn UserDataTrait> for trait-based dispatch of field access,
method calls, and metamethods. Falls back to metatable for Lua-level customization.
Implementations§
Source§impl LuaUserdata
impl LuaUserdata
Sourcepub fn new<T: UserDataTrait>(data: T) -> Self
pub fn new<T: UserDataTrait>(data: T) -> Self
Create a new userdata wrapping a value that implements UserDataTrait.
Sourcepub fn from_boxed(data: Box<dyn UserDataTrait>) -> Self
pub fn from_boxed(data: Box<dyn UserDataTrait>) -> Self
Create a userdata from an already-boxed trait object.
Used by the VM to convert UdValue::UserdataOwned results from
arithmetic trait methods into GC-managed userdata.
Sourcepub unsafe fn from_ref<T: UserDataTrait>(reference: &mut T) -> Self
pub unsafe fn from_ref<T: UserDataTrait>(reference: &mut T) -> Self
Create a borrowed userdata from a mutable reference.
The resulting userdata forwards all field/method/metamethod access through a raw pointer — zero overhead, no ownership transfer.
§Safety
The referenced object must outlive all Lua accesses to this userdata. Accessing the userdata after the Rust object is dropped is undefined behavior.
Sourcepub unsafe fn from_raw_ptr<T: UserDataTrait>(ptr: *mut T) -> Self
pub unsafe fn from_raw_ptr<T: UserDataTrait>(ptr: *mut T) -> Self
Create a borrowed userdata from a raw pointer.
§Safety
The pointer must be valid and properly aligned for the entire duration that Lua can access this userdata.
Sourcepub fn with_metatable<T: UserDataTrait>(data: T, metatable: TablePtr) -> Self
pub fn with_metatable<T: UserDataTrait>(data: T, metatable: TablePtr) -> Self
Create a new userdata with an initial metatable.
Sourcepub fn get_trait(&self) -> &dyn UserDataTrait
pub fn get_trait(&self) -> &dyn UserDataTrait
Get the trait object for direct field/method/metamethod dispatch.
Sourcepub fn get_trait_mut(&mut self) -> &mut dyn UserDataTrait
pub fn get_trait_mut(&mut self) -> &mut dyn UserDataTrait
Get the mutable trait object.
Sourcepub fn downcast_ref<T: 'static>(&self) -> Option<&T>
pub fn downcast_ref<T: 'static>(&self) -> Option<&T>
Downcast to a concrete type (immutable). Equivalent to old get_data().downcast_ref::<T>().
Sourcepub fn downcast_mut<T: 'static>(&mut self) -> Option<&mut T>
pub fn downcast_mut<T: 'static>(&mut self) -> Option<&mut T>
Downcast to a concrete type (mutable). Equivalent to old get_data_mut().downcast_mut::<T>().
Sourcepub fn get_data_mut(&mut self) -> &mut dyn Any
pub fn get_data_mut(&mut self) -> &mut dyn Any
Get raw &mut dyn Any reference (backward compatibility).