From 2661f88b7d3948afc5527b34f5e4a767f8c69f06 Mon Sep 17 00:00:00 2001 From: Joshua Harrison Date: Tue, 21 Dec 2021 03:41:03 +0000 Subject: [PATCH] Add fix for re-exporting serde. https://github.com/serde-rs/serde/issues/1465#issuecomment-800686252 --- sm/src/lib.rs | 2 +- sm_macro/src/sm/event.rs | 4 ++++ sm_macro/src/sm/machine.rs | 14 ++++++++++++++ sm_macro/src/sm/state.rs | 4 ++++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/sm/src/lib.rs b/sm/src/lib.rs index 534a375..bf0b123 100644 --- a/sm/src/lib.rs +++ b/sm/src/lib.rs @@ -524,7 +524,7 @@ pub use sm_macro::sm; /// Re-export the serde Serialize and Deserialize derive macros. #[doc(hidden)] -pub use ::serde::{Serialize, Deserialize}; +pub use ::serde::{self, Serialize, Deserialize}; /// State is a custom [marker trait][m] that allows [unit-like structs][u] to be /// used as states in a state machine. diff --git a/sm_macro/src/sm/event.rs b/sm_macro/src/sm/event.rs index 7a1e4fa..58b71ff 100644 --- a/sm_macro/src/sm/event.rs +++ b/sm_macro/src/sm/event.rs @@ -55,6 +55,7 @@ impl ToTokens for Event { tokens.extend(quote! { #[derive(Clone, Copy, Debug, Eq, Serialize, Deserialize)] + #[serde(crate = "sm::serde")] pub struct #name; impl Event for #name {} }); @@ -85,6 +86,7 @@ mod tests { let left = quote! { #[derive(Clone, Copy, Debug, Eq, Serialize, Deserialize)] + #[serde(crate = "sm::serde")] pub struct Push; impl Event for Push {} }; @@ -108,6 +110,7 @@ mod tests { let left = quote! { #[derive(Clone, Copy, Debug, Eq, Serialize, Deserialize)] + #[serde(crate = "sm::serde")] pub struct Push; impl Event for Push {} @@ -124,6 +127,7 @@ mod tests { } #[derive(Clone, Copy, Debug, Eq, Serialize, Deserialize)] + #[serde(crate = "sm::serde")] pub struct Coin; impl Event for Coin {} diff --git a/sm_macro/src/sm/machine.rs b/sm_macro/src/sm/machine.rs index 80ff36e..d31f5dd 100644 --- a/sm_macro/src/sm/machine.rs +++ b/sm_macro/src/sm/machine.rs @@ -147,6 +147,7 @@ impl ToTokens for Machine { use sm::{AsEnum, Event, InitialState, Initializer, Machine as M, NoneEvent, State, Transition, Serialize, Deserialize}; #[derive(Debug, Eq, PartialEq, Clone, Serialize, Deserialize)] + #[serde(crate = "sm::serde")] pub struct Machine(S, Option); impl M for Machine { @@ -329,6 +330,7 @@ mod tests { use sm::{AsEnum, Event, InitialState, Initializer, Machine as M, NoneEvent, State, Transition, Serialize, Deserialize}; #[derive(Debug, Eq, PartialEq, Clone, Serialize, Deserialize)] + #[serde(crate = "sm::serde")] pub struct Machine(S, Option); impl M for Machine { @@ -353,6 +355,7 @@ mod tests { } #[derive(Clone, Copy, Debug, Eq, Serialize, Deserialize)] + #[serde(crate = "sm::serde")] pub struct Unlocked; impl State for Unlocked {} @@ -369,6 +372,7 @@ mod tests { } #[derive(Clone, Copy, Debug, Eq, Serialize, Deserialize)] + #[serde(crate = "sm::serde")] pub struct Locked; impl State for Locked {} @@ -388,6 +392,7 @@ mod tests { impl InitialState for Locked {} #[derive(Clone, Copy, Debug, Eq, Serialize, Deserialize)] + #[serde(crate = "sm::serde")] pub struct Push; impl Event for Push {} @@ -624,6 +629,7 @@ mod tests { use sm::{AsEnum, Event, InitialState, Initializer, Machine as M, NoneEvent, State, Transition, Serialize, Deserialize}; #[derive(Debug, Eq, PartialEq, Clone, Serialize, Deserialize)] + #[serde(crate = "sm::serde")] pub struct Machine(S, Option); impl M for Machine { @@ -648,6 +654,7 @@ mod tests { } #[derive(Clone, Copy, Debug, Eq, Serialize, Deserialize)] + #[serde(crate = "sm::serde")] pub struct Locked; impl State for Locked {} @@ -664,6 +671,7 @@ mod tests { } #[derive(Clone, Copy, Debug, Eq, Serialize, Deserialize)] + #[serde(crate = "sm::serde")] pub struct Unlocked; impl State for Unlocked {} @@ -683,6 +691,7 @@ mod tests { impl InitialState for Unlocked {} #[derive(Clone, Copy, Debug, Eq, Serialize, Deserialize)] + #[serde(crate = "sm::serde")] pub struct Coin; impl Event for Coin {} @@ -699,6 +708,7 @@ mod tests { } #[derive(Clone, Copy, Debug, Eq, Serialize, Deserialize)] + #[serde(crate = "sm::serde")] pub struct Push; impl Event for Push {} @@ -776,6 +786,7 @@ mod tests { use sm::{AsEnum, Event, InitialState, Initializer, Machine as M, NoneEvent, State, Transition, Serialize, Deserialize}; #[derive(Debug, Eq, PartialEq, Clone, Serialize, Deserialize)] + #[serde(crate = "sm::serde")] pub struct Machine(S, Option); impl M for Machine { @@ -800,6 +811,7 @@ mod tests { } #[derive(Clone, Copy, Debug, Eq, Serialize, Deserialize)] + #[serde(crate = "sm::serde")] pub struct Locked; impl State for Locked {} @@ -816,6 +828,7 @@ mod tests { } #[derive(Clone, Copy, Debug, Eq, Serialize, Deserialize)] + #[serde(crate = "sm::serde")] pub struct Unlocked; impl State for Unlocked {} @@ -835,6 +848,7 @@ mod tests { impl InitialState for Unlocked {} #[derive(Clone, Copy, Debug, Eq, Serialize, Deserialize)] + #[serde(crate = "sm::serde")] pub struct TurnKey; impl Event for TurnKey {} diff --git a/sm_macro/src/sm/state.rs b/sm_macro/src/sm/state.rs index 8b03d98..58cf414 100644 --- a/sm_macro/src/sm/state.rs +++ b/sm_macro/src/sm/state.rs @@ -65,6 +65,7 @@ impl ToTokens for State { tokens.extend(quote! { #[derive(Clone, Copy, Debug, Eq, Serialize, Deserialize)] + #[serde(crate = "sm::serde")] pub struct #name; impl State for #name {} }); @@ -95,6 +96,7 @@ mod tests { let left = quote! { #[derive(Clone, Copy, Debug, Eq, Serialize, Deserialize)] + #[serde(crate = "sm::serde")] pub struct Unlocked; impl State for Unlocked {} }; @@ -118,6 +120,7 @@ mod tests { let left = quote! { #[derive(Clone, Copy, Debug, Eq, Serialize, Deserialize)] + #[serde(crate = "sm::serde")] pub struct Locked; impl State for Locked {} @@ -134,6 +137,7 @@ mod tests { } #[derive(Clone, Copy, Debug, Eq, Serialize, Deserialize)] + #[serde(crate = "sm::serde")] pub struct Unlocked; impl State for Unlocked {}