From 4791bddf15efd4b223da3f55942cfd46ddaba1e1 Mon Sep 17 00:00:00 2001 From: Terence Date: Tue, 31 Jul 2018 12:58:25 -0400 Subject: [PATCH] Implement `From` for `AnyLuaValue` This fixes #186. --- hlua/src/any.rs | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) mode change 100644 => 100755 hlua/src/any.rs diff --git a/hlua/src/any.rs b/hlua/src/any.rs old mode 100644 new mode 100755 index ec893d5c..22c01058 --- a/hlua/src/any.rs +++ b/hlua/src/any.rs @@ -1,3 +1,6 @@ + +use std::convert::From; + use ffi; use AsLua; @@ -258,6 +261,36 @@ impl<'lua, L> LuaRead for AnyHashableLuaValue } } +impl From for AnyLuaValue { + fn from(value: AnyHashableLuaValue) -> AnyLuaValue { + match value { + AnyHashableLuaValue::LuaString(string) => { + AnyLuaValue::LuaString(string) + }, + AnyHashableLuaValue::LuaAnyString(any_string) => { + AnyLuaValue::LuaAnyString(any_string) + }, + AnyHashableLuaValue::LuaNumber(integral) => { + AnyLuaValue::LuaNumber(integral as f64) + }, + AnyHashableLuaValue::LuaBoolean(boolean) => { + AnyLuaValue::LuaBoolean(boolean) + }, + AnyHashableLuaValue::LuaArray(array) => { + AnyLuaValue::LuaArray(array.into_iter().map(|(key, value)| + (From::from(key), From::from(value)) + ).collect()) + }, + AnyHashableLuaValue::LuaNil => { + AnyLuaValue::LuaNil + }, + AnyHashableLuaValue::LuaOther => { + AnyLuaValue::LuaOther + } + } + } +} + #[cfg(test)] mod tests { use Lua;