diff --git a/src/conversion.rs b/src/conversion.rs index 937ce3a..e5fb894 100644 --- a/src/conversion.rs +++ b/src/conversion.rs @@ -1,3 +1,4 @@ +use std::borrow::Cow; use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet}; use std::ffi::{CStr, CString}; use std::hash::{BuildHasher, Hash}; @@ -222,6 +223,12 @@ impl<'lua> ToLua<'lua> for &str { } } +impl<'lua> ToLua<'lua> for Cow<'_, str> { + fn to_lua(self, lua: &'lua Lua) -> Result> { + Ok(Value::String(lua.create_string(self.as_bytes())?)) + } +} + impl<'lua> ToLua<'lua> for CString { fn to_lua(self, lua: &'lua Lua) -> Result> { Ok(Value::String(lua.create_string(self.as_bytes())?)) @@ -256,6 +263,12 @@ impl<'lua> ToLua<'lua> for &CStr { } } +impl<'lua> ToLua<'lua> for Cow<'_, CStr> { + fn to_lua(self, lua: &'lua Lua) -> Result> { + Ok(Value::String(lua.create_string(self.to_bytes())?)) + } +} + impl<'lua> ToLua<'lua> for BString { fn to_lua(self, lua: &'lua Lua) -> Result> { Ok(Value::String(lua.create_string(&self)?))