From fe0938b1de0c46fc2afcaa3dcd6a0f4ec870d21a Mon Sep 17 00:00:00 2001 From: Nathan Reiner Date: Fri, 2 Aug 2024 00:36:10 +0200 Subject: add state which is shared with the lua environment --- src/config/evalsto.rs | 73 --------------------------------------------------- 1 file changed, 73 deletions(-) delete mode 100644 src/config/evalsto.rs (limited to 'src/config/evalsto.rs') diff --git a/src/config/evalsto.rs b/src/config/evalsto.rs deleted file mode 100644 index eae9b2d..0000000 --- a/src/config/evalsto.rs +++ /dev/null @@ -1,73 +0,0 @@ -use std::{marker::PhantomData, sync::Arc}; - -use mlua::{FromLua, IntoLua, Lua, Result, Value}; - -use crate::lua::ownedfunction::OwnedFunction; - -#[derive(Clone, Debug)] -pub enum EvalTo { - Function(Arc, PhantomData), - Value(T), -} - -impl EvalTo { - pub fn get<'lua>(&'lua self, args: A, lua: &'lua Lua) -> Result - where - T: FromLua<'lua> + Clone, - A: IntoLua<'lua>, - { - match self { - EvalTo::Function(value, _) => { - let func = value.get(lua); - T::from_lua(func.call(args)?, lua) - } - EvalTo::Value(value) => Ok(value.clone()), - } - } - - pub const fn new(value: T) -> Self { - Self::Value(value) - } -} - -impl<'lua, T, A> FromLua<'lua> for EvalTo -where - T: FromLua<'lua> + Clone, - A: IntoLua<'lua>, -{ - fn from_lua( - value: mlua::prelude::LuaValue<'lua>, - lua: &'lua mlua::prelude::Lua, - ) -> Result { - if value.is_function() { - Ok(Self::Function( - Arc::new(OwnedFunction::new(value, lua)), - PhantomData, - )) - } else { - Ok(Self::Value(T::from_lua(value, lua)?)) - } - } -} - -impl<'lua, T, A> IntoLua<'lua> for EvalTo -where - T: FromLua<'lua> + Clone + IntoLua<'lua>, - A: IntoLua<'lua>, -{ - fn into_lua(self, lua: &'lua mlua::prelude::Lua) -> Result> { - match self { - EvalTo::Function(value, _) => Ok(value.get(lua).into_lua(lua)?), - EvalTo::Value(value) => value.into_lua(lua), - } - } -} - -impl Default for EvalTo -where - T: Default, -{ - fn default() -> Self { - Self::Value(T::default()) - } -} -- cgit v1.2.3-70-g09d2