Trait mlua::UserDataMethods

source ·
pub trait UserDataMethods<'lua, T> {
Show 14 methods // 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> + 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> + MaybeSend + 'static, A: FromLuaMulti<'lua>, R: IntoLuaMulti<'lua>; fn add_async_method<'s, M, A, MR, R>( &mut self, name: impl AsRef<str>, method: M ) where T: 'static, M: Fn(&'lua Lua, &'s T, A) -> MR + MaybeSend + 'static, A: FromLuaMulti<'lua>, MR: Future<Output = Result<R>> + 's, R: IntoLuaMulti<'lua>, 'lua: 's; fn add_async_method_mut<'s, M, A, MR, R>( &mut self, name: impl AsRef<str>, method: M ) where T: 'static, M: Fn(&'lua Lua, &'s mut T, A) -> MR + MaybeSend + 'static, A: FromLuaMulti<'lua>, MR: Future<Output = Result<R>> + 's, R: IntoLuaMulti<'lua>, 'lua: 's; fn add_function<F, A, R>(&mut self, name: impl AsRef<str>, function: F) where F: Fn(&'lua Lua, A) -> Result<R> + 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> + MaybeSend + 'static, A: FromLuaMulti<'lua>, R: IntoLuaMulti<'lua>; fn add_async_function<F, A, FR, R>( &mut self, name: impl AsRef<str>, function: F ) where F: Fn(&'lua Lua, A) -> FR + MaybeSend + 'static, A: FromLuaMulti<'lua>, FR: Future<Output = Result<R>> + '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> + 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> + MaybeSend + 'static, A: FromLuaMulti<'lua>, R: IntoLuaMulti<'lua>; fn add_async_meta_method<'s, M, A, MR, R>( &mut self, name: impl AsRef<str>, method: M ) where T: 'static, M: Fn(&'lua Lua, &'s T, A) -> MR + MaybeSend + 'static, A: FromLuaMulti<'lua>, MR: Future<Output = Result<R>> + 's, R: IntoLuaMulti<'lua>, 'lua: 's; fn add_async_meta_method_mut<'s, M, A, MR, R>( &mut self, name: impl AsRef<str>, method: M ) where T: 'static, M: Fn(&'lua Lua, &'s mut T, A) -> MR + MaybeSend + 'static, A: FromLuaMulti<'lua>, MR: Future<Output = Result<R>> + 's, R: IntoLuaMulti<'lua>, 'lua: 's; fn add_meta_function<F, A, R>(&mut self, name: impl AsRef<str>, function: F) where F: Fn(&'lua Lua, A) -> Result<R> + 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> + MaybeSend + 'static, A: FromLuaMulti<'lua>, R: IntoLuaMulti<'lua>; fn add_async_meta_function<F, A, FR, R>( &mut self, name: impl AsRef<str>, function: F ) where F: Fn(&'lua Lua, A) -> FR + MaybeSend + 'static, A: FromLuaMulti<'lua>, FR: Future<Output = Result<R>> + '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> + 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> + 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_async_method<'s, M, A, MR, R>( &mut self, name: impl AsRef<str>, method: M )
where T: 'static, M: Fn(&'lua Lua, &'s T, A) -> MR + MaybeSend + 'static, A: FromLuaMulti<'lua>, MR: Future<Output = Result<R>> + 's, R: IntoLuaMulti<'lua>, 'lua: 's,

Available on crate feature async only.

Add an async method which accepts a &T as the first parameter and returns Future.

Refer to add_method for more information about the implementation.

Requires feature = "async"

source

fn add_async_method_mut<'s, M, A, MR, R>( &mut self, name: impl AsRef<str>, method: M )
where T: 'static, M: Fn(&'lua Lua, &'s mut T, A) -> MR + MaybeSend + 'static, A: FromLuaMulti<'lua>, MR: Future<Output = Result<R>> + 's, R: IntoLuaMulti<'lua>, 'lua: 's,

Available on crate feature async only.

Add an async method which accepts a &mut T as the first parameter and returns Future.

Refer to add_method for more information about the implementation.

Requires feature = "async"

source

fn add_function<F, A, R>(&mut self, name: impl AsRef<str>, function: F)
where F: Fn(&'lua Lua, A) -> Result<R> + 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> + 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_async_function<F, A, FR, R>( &mut self, name: impl AsRef<str>, function: F )
where F: Fn(&'lua Lua, A) -> FR + MaybeSend + 'static, A: FromLuaMulti<'lua>, FR: Future<Output = Result<R>> + 'lua, R: IntoLuaMulti<'lua>,

Available on crate feature async only.

Add a regular method as an async function which accepts generic arguments and returns Future.

This is an async version of add_function.

Requires feature = "async"

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> + 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> + 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_async_meta_method<'s, M, A, MR, R>( &mut self, name: impl AsRef<str>, method: M )
where T: 'static, M: Fn(&'lua Lua, &'s T, A) -> MR + MaybeSend + 'static, A: FromLuaMulti<'lua>, MR: Future<Output = Result<R>> + 's, R: IntoLuaMulti<'lua>, 'lua: 's,

Available on crate feature async only.

Add an async metamethod which accepts a &T as the first parameter and returns Future.

This is an async version of add_meta_method.

Requires feature = "async"

source

fn add_async_meta_method_mut<'s, M, A, MR, R>( &mut self, name: impl AsRef<str>, method: M )
where T: 'static, M: Fn(&'lua Lua, &'s mut T, A) -> MR + MaybeSend + 'static, A: FromLuaMulti<'lua>, MR: Future<Output = Result<R>> + 's, R: IntoLuaMulti<'lua>, 'lua: 's,

Available on crate feature async only.

Add an async metamethod which accepts a &mut T as the first parameter and returns Future.

This is an async version of add_meta_method_mut.

Requires feature = "async"

source

fn add_meta_function<F, A, R>(&mut self, name: impl AsRef<str>, function: F)
where F: Fn(&'lua Lua, A) -> Result<R> + 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> + 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.

source

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

Available on crate feature async only.

Add a metamethod which accepts generic arguments and returns Future.

This is an async version of add_meta_function.

Requires feature = "async"

Object Safety§

This trait is not object safe.

Implementors§

source§

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