use mlua::{FromLuaMulti, IntoLua};
pub trait TableSetFnExt {
fn set_rtk_api_fn<F, I, O>(&self, lua: &mlua::Lua, key: &'static str, f: F) -> mlua::Result<()>
where
F: Fn(I) -> O + Send + Sync + 'static,
I: FromLuaMulti,
O: IntoLua;
}
impl TableSetFnExt for mlua::Table {
fn set_rtk_api_fn<F, I, O>(&self, lua: &mlua::Lua, key: &'static str, f: F) -> mlua::Result<()>
where
F: Fn(I) -> O + Send + Sync + 'static,
I: FromLuaMulti,
O: IntoLua,
{
let function = lua.create_function(move |_, a: I| {
let result = f(a);
Ok(result)
})?;
self.set(key, function)
}
}