From 6a86b8c12d4ab7fa23b29fdf8d0b403ff81938a5 Mon Sep 17 00:00:00 2001 From: Amos Wenger Date: Tue, 28 Jan 2025 17:31:13 +0100 Subject: [PATCH] Allow empty structs --- merde/examples/simple.rs | 6 ++++++ merde/src/lib.rs | 8 ++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/merde/examples/simple.rs b/merde/examples/simple.rs index e3b9c20..1a840bb 100644 --- a/merde/examples/simple.rs +++ b/merde/examples/simple.rs @@ -60,3 +60,9 @@ struct Person<'s> { merde::derive! { impl (Serialize, Deserialize) for struct Person<'s> { name, age, address } } + +struct Empty {} + +merde::derive! { + impl (Serialize, Deserialize) for struct Empty {} +} diff --git a/merde/src/lib.rs b/merde/src/lib.rs index 06510d4..c68826b 100644 --- a/merde/src/lib.rs +++ b/merde/src/lib.rs @@ -60,7 +60,7 @@ macro_rules! impl_deserialize { $( let mut $field = $crate::none_of(|i: $struct_name| i.$field); - )+ + )* loop { match __de.next().await? { @@ -96,7 +96,7 @@ macro_rules! impl_deserialize { __opinions.default_field_value(stringify!($field), __slot); } $crate::Deserialize::from_option($field, stringify!($field).into())? - },)+ + },)* }) } } @@ -514,7 +514,7 @@ macro_rules! impl_serialize { $( serializer.write($crate::Event::Str($crate::CowStr::Borrowed(stringify!($field)))).await?; self.$field.serialize(serializer).await?; - )+ + )* serializer.write($crate::Event::MapEnd).await } } @@ -545,7 +545,7 @@ macro_rules! impl_serialize { serializer.write($crate::Event::Str($crate::CowStr::Borrowed($variant_str))).await?; value.serialize(serializer).await?; } - )+ + )* } serializer.write($crate::Event::MapEnd).await