pub struct Userdata { /* private fields */ }Expand description
A Lua userdata object — a GC-managed handle wrapping a host-side payload
(an io file handle, a newproxy identity token, or an embedder-supplied
Rust value) plus an optional metatable.
Implementations§
Source§impl Userdata
impl Userdata
Sourcepub fn set_metatable(&mut self, mt: Option<Gc<Table>>)
pub fn set_metatable(&mut self, mt: Option<Gc<Table>>)
Install (or clear) this userdata’s metatable.
Sourcepub fn file(&self) -> &FileHandle
pub fn file(&self) -> &FileHandle
The file handle behind this userdata (all io userdata are files; the
Empty proxy variant is only constructed by newproxy and surfaces
via Self::is_proxy, so callers reaching .file() must already
know they hold a file handle — luna’s io builtins all guard with
is_proxy() or Userdata matching before unpacking).
Sourcepub fn file_mut(&mut self) -> &mut FileHandle
pub fn file_mut(&mut self) -> &mut FileHandle
Mutable variant of Self::file.
Sourcepub fn is_proxy(&self) -> bool
pub fn is_proxy(&self) -> bool
True for newproxy userdata — they have no host payload, only a
metatable and identity. io builtins reject these with the PUC
“bad argument” error rather than panicking on file().
Sourcepub fn downcast<T: Any + 'static>(&self) -> Option<&T>
pub fn downcast<T: Any + 'static>(&self) -> Option<&T>
Borrow the host payload as &T if this userdata holds a T.
Returns None when the userdata isn’t a host payload, or holds
a different T. Embedders typically reach this through
crate::vm::Vm::userdata_borrow or via a Value::Userdata
match arm.
Sourcepub fn downcast_mut<T: Any + 'static>(&mut self) -> Option<&mut T>
pub fn downcast_mut<T: Any + 'static>(&mut self) -> Option<&mut T>
Mutable borrow variant of Self::downcast.