Struct rlua::prelude::LuaRegistryKey
source · [−]pub struct LuaRegistryKey { /* private fields */ }
Expand description
An auto generated key into the Lua registry.
This is a handle to a value stored inside the Lua registry. Unlike the Table
or Function
handle types, this handle is Send + Sync + 'static
and can be returned outside of a call to
Lua::context
. Also, rather than calling methods directly on it, you must instead retrieve the
value first by calling Context::registry_value
inside a call to Lua::context
.
It is not automatically garbage collected on Drop, but it can be removed with
Context::remove_registry_value
, and instances not manually removed can be garbage collected
with Context::expire_registry_values
.
Be warned, If you place this into Lua via a UserData
type or a rust callback and rely on
Context::expire_registry_values
, it is very easy to accidentally cause reference cycles
that cannot be automatically collected. The Lua garbage collector is not aware of the registry
handle pattern, so holding onto a RegistryKey
inside Lua may lead to it never being dropped,
and it if it is not droped, Context::expire_registry_values
will never remove the value from
the registry, leading to an uncollectable cycle. Instead of placing a RegistryKey
into Lua
and relying on it being automatically dropped, prefer APIs which the Lua garbage collector
understands, such as UserData::set_i_user_value
/ UserData::get_i_user_value
for UserData
types and Function::bind
for callbacks.
Trait Implementations
sourceimpl Debug for RegistryKey
impl Debug for RegistryKey
Auto Trait Implementations
impl RefUnwindSafe for RegistryKey
impl Send for RegistryKey
impl Sync for RegistryKey
impl Unpin for RegistryKey
impl UnwindSafe for RegistryKey
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more