From 2bf34fd04c1bff6c0569053ec1f17697d9537b80 Mon Sep 17 00:00:00 2001
From: Quaternions <krakow20@gmail.com>
Date: Wed, 23 Apr 2025 17:19:59 -0700
Subject: [PATCH] roblox_emulator: move coerce method onto CoerceEnum struct

---
 lib/roblox_emulator/src/runner/enum.rs       | 16 +++++++++-------
 lib/roblox_emulator/src/runner/tween_info.rs |  4 ++--
 2 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/lib/roblox_emulator/src/runner/enum.rs b/lib/roblox_emulator/src/runner/enum.rs
index 610bc23..d3c3dc3 100644
--- a/lib/roblox_emulator/src/runner/enum.rs
+++ b/lib/roblox_emulator/src/runner/enum.rs
@@ -62,13 +62,6 @@ impl<'a> EnumItems<'a>{
 			None=>self.from_value(enum_item.value)
 		}
 	}
-	pub fn coerce(&self,e:CoerceEnum)->mlua::Result<EnumItem<'a>>{
-		match e{
-			CoerceEnum::Integer(int)=>self.from_value(int as u32),
-			CoerceEnum::String(s)=>self.from_name(&*s.to_str()?),
-			CoerceEnum::Enum(enum_item)=>self.from_enum(enum_item),
-		}.ok_or_else(||mlua::Error::runtime(format!("Bad {} EnumItem",self.ed.name)))
-	}
 }
 
 pub enum CoerceEnum<'a>{
@@ -76,6 +69,15 @@ pub enum CoerceEnum<'a>{
 	String(mlua::String),
 	Enum(EnumItem<'a>),
 }
+impl CoerceEnum<'_>{
+	pub fn coerce_to<'a>(self,enum_items:EnumItems<'a>)->mlua::Result<EnumItem<'a>>{
+		match self{
+			CoerceEnum::Integer(int)=>enum_items.from_value(int as u32),
+			CoerceEnum::String(s)=>enum_items.from_name(&*s.to_str()?),
+			CoerceEnum::Enum(enum_item)=>enum_items.from_enum(enum_item),
+		}.ok_or_else(||mlua::Error::runtime(format!("Bad {} EnumItem",enum_items.ed.name)))
+	}
+}
 
 impl mlua::FromLua for CoerceEnum<'_>{
 	fn from_lua(value:mlua::Value,_lua:&mlua::Lua)->Result<Self,mlua::Error>{
diff --git a/lib/roblox_emulator/src/runner/tween_info.rs b/lib/roblox_emulator/src/runner/tween_info.rs
index ef65715..6f018cd 100644
--- a/lib/roblox_emulator/src/runner/tween_info.rs
+++ b/lib/roblox_emulator/src/runner/tween_info.rs
@@ -22,12 +22,12 @@ pub fn set_globals(lua:&mlua::Lua,globals:&mlua::Table)->Result<(),mlua::Error>{
 				easing_style:match easing_style{
 					// Enum.EasingStyle.Quad
 					None=>rbx_types::Enum::from_u32(3),
-					Some(e)=>Enums.get("EasingStyle").unwrap().coerce(e)?.into(),
+					Some(e)=>e.coerce_to(Enums.get("EasingStyle").unwrap())?.into(),
 				},
 				easing_direction:match easing_direction{
 					// Enum.EasingDirection.Out
 					None=>rbx_types::Enum::from_u32(1),
-					Some(e)=>Enums.get("EasingDirection").unwrap().coerce(e)?.into(),
+					Some(e)=>e.coerce_to(Enums.get("EasingDirection").unwrap())?.into(),
 				},
 				repeat_count:repeat_count.unwrap_or(0),
 				reverses:reverses.unwrap_or(false),