diff --git a/src/lune/builtins/net/mod.rs b/src/lune/builtins/net/mod.rs index 1972dc8..d41b047 100644 --- a/src/lune/builtins/net/mod.rs +++ b/src/lune/builtins/net/mod.rs @@ -40,7 +40,7 @@ pub fn create(lua: &Lua) -> LuaResult { fn net_json_encode<'lua>( lua: &'lua Lua, - (val, pretty): (BString, Option), + (val, pretty): (LuaValue<'lua>, Option), ) -> LuaResult> { EncodeDecodeConfig::from((EncodeDecodeFormat::Json, pretty.unwrap_or_default())) .serialize_to_string(lua, val) diff --git a/src/lune/builtins/net/websocket.rs b/src/lune/builtins/net/websocket.rs index fb7233c..5dba4ec 100644 --- a/src/lune/builtins/net/websocket.rs +++ b/src/lune/builtins/net/websocket.rs @@ -3,6 +3,7 @@ use std::sync::{ Arc, }; +use bstr::{BString, ByteSlice}; use mlua::prelude::*; use futures_util::{ @@ -160,7 +161,7 @@ where methods.add_async_method( "send", - |_, this, (string, as_binary): (LuaString, Option)| async move { + |_, this, (string, as_binary): (BString, Option)| async move { this.send(if as_binary.unwrap_or_default() { WsMessage::Binary(string.as_bytes().to_vec()) } else { diff --git a/src/lune/builtins/serde/encode_decode.rs b/src/lune/builtins/serde/encode_decode.rs index 68a7f18..d8bae5c 100644 --- a/src/lune/builtins/serde/encode_decode.rs +++ b/src/lune/builtins/serde/encode_decode.rs @@ -57,14 +57,11 @@ impl EncodeDecodeConfig { pub fn serialize_to_string<'lua>( self, lua: &'lua Lua, - value: BString, + value: LuaValue<'lua>, ) -> LuaResult> { let bytes = match self.format { EncodeDecodeFormat::Json => { - let serialized: JsonValue = lua.from_value_with( - LuaValue::String(lua.create_string(value)?), - LUA_DESERIALIZE_OPTIONS, - )?; + let serialized: JsonValue = lua.from_value_with(value, LUA_DESERIALIZE_OPTIONS)?; if self.pretty { serde_json::to_vec_pretty(&serialized).into_lua_err()? } else { @@ -72,19 +69,13 @@ impl EncodeDecodeConfig { } } EncodeDecodeFormat::Yaml => { - let serialized: YamlValue = lua.from_value_with( - LuaValue::String(lua.create_string(value)?), - LUA_DESERIALIZE_OPTIONS, - )?; + let serialized: YamlValue = lua.from_value_with(value, LUA_DESERIALIZE_OPTIONS)?; let mut writer = Vec::with_capacity(128); serde_yaml::to_writer(&mut writer, &serialized).into_lua_err()?; writer } EncodeDecodeFormat::Toml => { - let serialized: TomlValue = lua.from_value_with( - LuaValue::String(lua.create_string(value)?), - LUA_DESERIALIZE_OPTIONS, - )?; + let serialized: TomlValue = lua.from_value_with(value, LUA_DESERIALIZE_OPTIONS)?; let s = if self.pretty { toml::to_string_pretty(&serialized).into_lua_err()? } else { diff --git a/src/lune/builtins/serde/mod.rs b/src/lune/builtins/serde/mod.rs index bad9f51..910cb59 100644 --- a/src/lune/builtins/serde/mod.rs +++ b/src/lune/builtins/serde/mod.rs @@ -20,7 +20,7 @@ pub fn create(lua: &Lua) -> LuaResult { fn serde_encode<'lua>( lua: &'lua Lua, - (format, val, pretty): (EncodeDecodeFormat, BString, Option), + (format, val, pretty): (EncodeDecodeFormat, LuaValue<'lua>, Option), ) -> LuaResult> { let config = EncodeDecodeConfig::from((format, pretty.unwrap_or_default())); config.serialize_to_string(lua, val)