Trait UserDataMethods

Source
pub trait UserDataMethods<'lua, T> {
    // Required methods
    fn add_method<M, A, R>(&mut self, name: impl AsRef<str>, method: M)
       where M: Fn(&'lua Lua, &T, A) -> Result<R, Error> + MaybeSend + 'static,
             A: FromLuaMulti<'lua>,
             R: IntoLuaMulti<'lua>;
    fn add_method_mut<M, A, R>(&mut self, name: impl AsRef<str>, method: M)
       where M: FnMut(&'lua Lua, &mut T, A) -> Result<R, Error> + MaybeSend + 'static,
             A: FromLuaMulti<'lua>,
             R: IntoLuaMulti<'lua>;
    fn add_function<F, A, R>(&mut self, name: impl AsRef<str>, function: F)
       where F: Fn(&'lua Lua, A) -> Result<R, Error> + MaybeSend + 'static,
             A: FromLuaMulti<'lua>,
             R: IntoLuaMulti<'lua>;
    fn add_function_mut<F, A, R>(&mut self, name: impl AsRef<str>, function: F)
       where F: FnMut(&'lua Lua, A) -> Result<R, Error> + MaybeSend + 'static,
             A: FromLuaMulti<'lua>,
             R: IntoLuaMulti<'lua>;
    fn add_meta_method<M, A, R>(&mut self, name: impl AsRef<str>, method: M)
       where M: Fn(&'lua Lua, &T, A) -> Result<R, Error> + MaybeSend + 'static,
             A: FromLuaMulti<'lua>,
             R: IntoLuaMulti<'lua>;
    fn add_meta_method_mut<M, A, R>(&mut self, name: impl AsRef<str>, method: M)
       where M: FnMut(&'lua Lua, &mut T, A) -> Result<R, Error> + MaybeSend + 'static,
             A: FromLuaMulti<'lua>,
             R: IntoLuaMulti<'lua>;
    fn add_meta_function<F, A, R>(&mut self, name: impl AsRef<str>, function: F)
       where F: Fn(&'lua Lua, A) -> Result<R, Error> + MaybeSend + 'static,
             A: FromLuaMulti<'lua>,
             R: IntoLuaMulti<'lua>;
    fn add_meta_function_mut<F, A, R>(
        &mut self,
        name: impl AsRef<str>,
        function: F,
    )
       where F: FnMut(&'lua Lua, A) -> Result<R, Error> + MaybeSend + 'static,
             A: FromLuaMulti<'lua>,
             R: IntoLuaMulti<'lua>;
}
Expand description

Method registry for UserData implementors.

Required Methods§

Source

fn add_method<M, A, R>(&mut self, name: impl AsRef<str>, method: M)
where M: Fn(&'lua Lua, &T, A) -> Result<R, Error> + MaybeSend + 'static, A: FromLuaMulti<'lua>, R: IntoLuaMulti<'lua>,

Add a regular method which accepts a &T as the first parameter.

Regular methods are implemented by overriding the __index metamethod and returning the accessed method. This allows them to be used with the expected userdata:method() syntax.

If add_meta_method is used to set the __index metamethod, the __index metamethod will be used as a fall-back if no regular method is found.

Source

fn add_method_mut<M, A, R>(&mut self, name: impl AsRef<str>, method: M)
where M: FnMut(&'lua Lua, &mut T, A) -> Result<R, Error> + MaybeSend + 'static, A: FromLuaMulti<'lua>, R: IntoLuaMulti<'lua>,

Add a regular method which accepts a &mut T as the first parameter.

Refer to add_method for more information about the implementation.

Source

fn add_function<F, A, R>(&mut self, name: impl AsRef<str>, function: F)
where F: Fn(&'lua Lua, A) -> Result<R, Error> + MaybeSend + 'static, A: FromLuaMulti<'lua>, R: IntoLuaMulti<'lua>,

Add a regular method as a function which accepts generic arguments, the first argument will be a AnyUserData of type T if the method is called with Lua method syntax: my_userdata:my_method(arg1, arg2), or it is passed in as the first argument: my_userdata.my_method(my_userdata, arg1, arg2).

Prefer to use add_method or add_method_mut as they are easier to use.

Source

fn add_function_mut<F, A, R>(&mut self, name: impl AsRef<str>, function: F)
where F: FnMut(&'lua Lua, A) -> Result<R, Error> + MaybeSend + 'static, A: FromLuaMulti<'lua>, R: IntoLuaMulti<'lua>,

Add a regular method as a mutable function which accepts generic arguments.

This is a version of add_function that accepts a FnMut argument.

Source

fn add_meta_method<M, A, R>(&mut self, name: impl AsRef<str>, method: M)
where M: Fn(&'lua Lua, &T, A) -> Result<R, Error> + MaybeSend + 'static, A: FromLuaMulti<'lua>, R: IntoLuaMulti<'lua>,

Add a metamethod which accepts a &T as the first parameter.

§Note

This can cause an error with certain binary metamethods that can trigger if only the right side has a metatable. To prevent this, use add_meta_function.

Source

fn add_meta_method_mut<M, A, R>(&mut self, name: impl AsRef<str>, method: M)
where M: FnMut(&'lua Lua, &mut T, A) -> Result<R, Error> + MaybeSend + 'static, A: FromLuaMulti<'lua>, R: IntoLuaMulti<'lua>,

Add a metamethod as a function which accepts a &mut T as the first parameter.

§Note

This can cause an error with certain binary metamethods that can trigger if only the right side has a metatable. To prevent this, use add_meta_function.

Source

fn add_meta_function<F, A, R>(&mut self, name: impl AsRef<str>, function: F)
where F: Fn(&'lua Lua, A) -> Result<R, Error> + MaybeSend + 'static, A: FromLuaMulti<'lua>, R: IntoLuaMulti<'lua>,

Add a metamethod which accepts generic arguments.

Metamethods for binary operators can be triggered if either the left or right argument to the binary operator has a metatable, so the first argument here is not necessarily a userdata of type T.

Source

fn add_meta_function_mut<F, A, R>(&mut self, name: impl AsRef<str>, function: F)
where F: FnMut(&'lua Lua, A) -> Result<R, Error> + MaybeSend + 'static, A: FromLuaMulti<'lua>, R: IntoLuaMulti<'lua>,

Add a metamethod as a mutable function which accepts generic arguments.

This is a version of add_meta_function that accepts a FnMut argument.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<'lua, T> UserDataMethods<'lua, T> for UserDataRegistry<'lua, T>
where T: 'static,