Initial upgrade to mlua 0.10
All checks were successful
Build and deploy / Build application (push) Successful in 7m59s
Build and deploy / Build container (push) Successful in 2m54s
Build and deploy / Deploy container (push) Successful in 19s

This commit is contained in:
2024-11-30 04:47:52 +01:00
parent d11e79cdfa
commit ae2c27551f
5 changed files with 39 additions and 24 deletions

View File

@@ -152,7 +152,7 @@ fn run_schedule(
pool.spawn_pinned(move || async move {
let lua = LUA.lock().await;
let f: mlua::Function = lua.named_registry_value(uuid.to_string().as_str()).unwrap();
f.call_async::<_, ()>(()).await.unwrap();
f.call_async::<()>(()).await.unwrap();
})
.await
.unwrap();
@@ -160,7 +160,7 @@ fn run_schedule(
}
impl mlua::UserData for DeviceManager {
fn add_methods<'lua, M: mlua::UserDataMethods<'lua, Self>>(methods: &mut M) {
fn add_methods<M: mlua::UserDataMethods<Self>>(methods: &mut M) {
methods.add_async_method("add", |_lua, this, device: Box<dyn Device>| async move {
this.add(device).await;

View File

@@ -18,7 +18,7 @@ use async_trait::async_trait;
use automation_cast::Cast;
use dyn_clone::DynClone;
use google_home::traits::OnOff;
use mlua::AnyUserDataExt;
use mlua::ObjectLike;
pub use self::air_filter::AirFilter;
pub use self::audio_setup::AudioSetup;
@@ -56,7 +56,7 @@ macro_rules! register_device {
macro_rules! impl_device {
($device:ty) => {
impl mlua::UserData for $device {
fn add_methods<'lua, M: mlua::UserDataMethods<'lua, Self>>(methods: &mut M) {
fn add_methods<M: mlua::UserDataMethods<Self>>(methods: &mut M) {
methods.add_async_function("new", |_lua, config| async {
let device: $device = crate::devices::LuaDeviceCreate::create(config)
.await
@@ -70,7 +70,7 @@ macro_rules! impl_device {
Ok(b)
});
methods.add_async_method("get_id", |_lua, this, _: ()| async { Ok(this.get_id()) });
methods.add_async_method("get_id", |_lua, this, _: ()| async move { Ok(this.get_id()) });
if impls::impls!($device: OnOff) {
methods.add_async_method("set_on", |_lua, this, on: bool| async move {
@@ -145,14 +145,14 @@ pub trait Device:
fn get_id(&self) -> String;
}
impl<'lua> mlua::FromLua<'lua> for Box<dyn Device> {
fn from_lua(value: mlua::Value<'lua>, _lua: &'lua mlua::Lua) -> mlua::Result<Self> {
impl mlua::FromLua for Box<dyn Device> {
fn from_lua(value: mlua::Value, _lua: &mlua::Lua) -> mlua::Result<Self> {
match value {
mlua::Value::UserData(ud) => {
let ud = if ud.is::<Box<dyn Device>>() {
ud
} else {
ud.call_method::<_, mlua::AnyUserData>("__box", ())?
ud.call_method::<_>("__box", ())?
};
let b = ud.borrow::<Self>()?.clone();