Hide Deserializer inner fields

Improve documentation
This commit is contained in:
Alex Orlenko 2021-04-27 10:04:18 +01:00
parent 2fae94586d
commit f5b88624ce
5 changed files with 28 additions and 9 deletions

View File

@ -118,6 +118,7 @@ pub use crate::value::{FromLua, FromLuaMulti, MultiValue, Nil, ToLua, ToLuaMulti
pub use crate::thread::AsyncThread; pub use crate::thread::AsyncThread;
#[cfg(feature = "serialize")] #[cfg(feature = "serialize")]
#[doc(inline)]
pub use crate::serde::{ser::Options as SerializeOptions, LuaSerdeExt}; pub use crate::serde::{ser::Options as SerializeOptions, LuaSerdeExt};
pub mod prelude; pub mod prelude;

View File

@ -16,4 +16,5 @@ pub use crate::{
pub use crate::AsyncThread as LuaAsyncThread; pub use crate::AsyncThread as LuaAsyncThread;
#[cfg(feature = "serialize")] #[cfg(feature = "serialize")]
#[doc(inline)]
pub use crate::{LuaSerdeExt, SerializeOptions as LuaSerializeOptions}; pub use crate::{LuaSerdeExt, SerializeOptions as LuaSerializeOptions};

View File

@ -7,7 +7,14 @@ use crate::table::{TablePairs, TableSequence};
use crate::value::Value; use crate::value::Value;
/// A struct for deserializing Lua values into Rust values. /// A struct for deserializing Lua values into Rust values.
pub struct Deserializer<'lua>(pub Value<'lua>); pub struct Deserializer<'lua>(Value<'lua>);
impl<'lua> Deserializer<'lua> {
/// Creates a new Lua Deserializer for the `Value`.
pub fn new(value: Value<'lua>) -> Self {
Deserializer(value)
}
}
impl<'lua, 'de> serde::Deserializer<'de> for Deserializer<'lua> { impl<'lua, 'de> serde::Deserializer<'de> for Deserializer<'lua> {
type Error = Error; type Error = Error;

View File

@ -13,6 +13,7 @@ use crate::types::LightUserData;
use crate::util::{assert_stack, StackGuard}; use crate::util::{assert_stack, StackGuard};
use crate::value::Value; use crate::value::Value;
/// Trait for serializing/deserializing Lua values using Serde.
pub trait LuaSerdeExt<'lua> { pub trait LuaSerdeExt<'lua> {
/// A special value (lightuserdata) to encode/decode optional (none) values. /// A special value (lightuserdata) to encode/decode optional (none) values.
/// ///
@ -195,7 +196,7 @@ impl<'lua> LuaSerdeExt<'lua> for Lua {
where where
T: Deserialize<'lua>, T: Deserialize<'lua>,
{ {
T::deserialize(de::Deserializer(value)) T::deserialize(de::Deserializer::new(value))
} }
} }
@ -221,3 +222,8 @@ static ARRAY_METATABLE_REGISTRY_KEY: u8 = 0;
pub mod de; pub mod de;
pub mod ser; pub mod ser;
#[doc(inline)]
pub use de::Deserializer;
#[doc(inline)]
pub use ser::Serializer;

View File

@ -26,7 +26,7 @@ pub struct Options {
/// ///
/// Default: true /// Default: true
/// ///
/// [`array_metatable`]: trait.LuaSerdeExt.html#tymethod.array_metatable /// [`array_metatable`]: ../trait.LuaSerdeExt.html#tymethod.array_metatable
pub set_array_metatable: bool, pub set_array_metatable: bool,
/// If true, serialize `None` (part of `Option` type) to [`null`]. /// If true, serialize `None` (part of `Option` type) to [`null`].
@ -34,8 +34,8 @@ pub struct Options {
/// ///
/// Default: true /// Default: true
/// ///
/// [`null`]: trait.LuaSerdeExt.html#tymethod.null /// [`null`]: ../trait.LuaSerdeExt.html#tymethod.null
/// [`Nil`]: ../enum.Value.html#variant.Nil /// [`Nil`]: ../../enum.Value.html#variant.Nil
pub serialize_none_to_null: bool, pub serialize_none_to_null: bool,
/// If true, serialize `Unit` (type of `()` in Rust) and Unit structs to [`null`]. /// If true, serialize `Unit` (type of `()` in Rust) and Unit structs to [`null`].
@ -43,8 +43,8 @@ pub struct Options {
/// ///
/// Default: true /// Default: true
/// ///
/// [`null`]: trait.LuaSerdeExt.html#tymethod.null /// [`null`]: ../trait.LuaSerdeExt.html#tymethod.null
/// [`Nil`]: ../enum.Value.html#variant.Nil /// [`Nil`]: ../../enum.Value.html#variant.Nil
pub serialize_unit_to_null: bool, pub serialize_unit_to_null: bool,
} }
@ -59,12 +59,12 @@ impl Default for Options {
} }
impl<'lua> Serializer<'lua> { impl<'lua> Serializer<'lua> {
/// Creates a new instance of Lua Serializer with default options /// Creates a new Lua Serializer with default options.
pub fn new(lua: &'lua Lua) -> Self { pub fn new(lua: &'lua Lua) -> Self {
Self::new_with_options(lua, Options::default()) Self::new_with_options(lua, Options::default())
} }
/// Creates a new instance of Lua Serializer with custom options /// Creates a new Lua Serializer with custom options.
pub fn new_with_options(lua: &'lua Lua, options: Options) -> Self { pub fn new_with_options(lua: &'lua Lua, options: Options) -> Self {
Serializer { lua, options } Serializer { lua, options }
} }
@ -267,6 +267,7 @@ impl<'lua> ser::Serializer for Serializer<'lua> {
} }
} }
#[doc(hidden)]
pub struct SerializeVec<'lua> { pub struct SerializeVec<'lua> {
table: Table<'lua>, table: Table<'lua>,
options: Options, options: Options,
@ -330,6 +331,7 @@ impl<'lua> ser::SerializeTupleStruct for SerializeVec<'lua> {
} }
} }
#[doc(hidden)]
pub struct SerializeTupleVariant<'lua> { pub struct SerializeTupleVariant<'lua> {
name: String<'lua>, name: String<'lua>,
table: Table<'lua>, table: Table<'lua>,
@ -358,6 +360,7 @@ impl<'lua> ser::SerializeTupleVariant for SerializeTupleVariant<'lua> {
} }
} }
#[doc(hidden)]
pub struct SerializeMap<'lua> { pub struct SerializeMap<'lua> {
table: Table<'lua>, table: Table<'lua>,
key: Option<Value<'lua>>, key: Option<Value<'lua>>,
@ -412,6 +415,7 @@ impl<'lua> ser::SerializeStruct for SerializeMap<'lua> {
} }
} }
#[doc(hidden)]
pub struct SerializeStructVariant<'lua> { pub struct SerializeStructVariant<'lua> {
name: String<'lua>, name: String<'lua>,
table: Table<'lua>, table: Table<'lua>,