Trait UserDataMethods

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

Method registry for UserData implementors.

Required Methods§

Source

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

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 ToString, method: M)
where M: FnMut(&Lua, &mut T, A) -> Result<R, Error> + MaybeSend + 'static, A: FromLuaMulti, R: IntoLuaMulti,

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 ToString, function: F)
where F: Fn(&Lua, A) -> Result<R, Error> + MaybeSend + 'static, A: FromLuaMulti, R: IntoLuaMulti,

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

Source

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

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 ToString, method: M)
where M: Fn(&Lua, &T, A) -> Result<R, Error> + MaybeSend + 'static, A: FromLuaMulti, R: IntoLuaMulti,

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 ToString, method: M)
where M: FnMut(&Lua, &mut T, A) -> Result<R, Error> + MaybeSend + 'static, A: FromLuaMulti, R: IntoLuaMulti,

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 ToString, function: F)
where F: Fn(&Lua, A) -> Result<R, Error> + MaybeSend + 'static, A: FromLuaMulti, R: IntoLuaMulti,

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 ToString, function: F)
where F: FnMut(&Lua, A) -> Result<R, Error> + MaybeSend + 'static, A: FromLuaMulti, R: IntoLuaMulti,

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§