@@ -12,6 +12,10 @@ pub mod hash;
1212pub mod ord;
1313pub mod partial_eq;
1414pub mod partial_ord;
15+ #[ cfg( feature = "serde" ) ]
16+ mod serde;
17+ #[ cfg( feature = "serde" ) ]
18+ pub mod serialize;
1519#[ cfg( feature = "zeroize" ) ]
1620pub mod zeroize;
1721#[ cfg( feature = "zeroize" ) ]
@@ -56,6 +60,9 @@ pub enum Trait {
5660 PartialEq ,
5761 /// [`PartialOrd`].
5862 PartialOrd ,
63+ /// [`Serialize`](https://docs.rs/serde/latest/serde/derive.Serialize.html).
64+ #[ cfg( feature = "serde" ) ]
65+ Serialize ,
5966 /// [`Zeroize`](https://docs.rs/zeroize/latest/zeroize/trait.Zeroize.html).
6067 #[ cfg( feature = "zeroize" ) ]
6168 Zeroize ,
@@ -78,6 +85,8 @@ macro_rules! trait_dispatch {
7885 Trait :: Ord => ord:: Ord :: $method( $( $par) ,* ) ,
7986 Trait :: PartialEq => partial_eq:: PartialEq :: $method( $( $par) ,* ) ,
8087 Trait :: PartialOrd => partial_ord:: PartialOrd :: $method( $( $par) ,* ) ,
88+ #[ cfg( feature = "serde" ) ]
89+ Trait :: Serialize => serialize:: Serialize :: $method( $( $par) ,* ) ,
8190 #[ cfg( feature = "zeroize" ) ]
8291 Trait :: Zeroize => zeroize:: Zeroize :: $method( $( $par) ,* ) ,
8392 #[ cfg( feature = "zeroize" ) ]
@@ -99,15 +108,25 @@ impl Trait {
99108 "Default" => Ok ( Default ) ,
100109 #[ cfg( feature = "serde" ) ]
101110 "Deserialize" => Ok ( Deserialize ) ,
111+ #[ cfg( not( feature = "serde" ) ) ]
112+ "Deserialize" => Err ( Error :: serde_feature ( path. span ( ) ) ) ,
102113 "Eq" => Ok ( Eq ) ,
103114 "Hash" => Ok ( Hash ) ,
104115 "Ord" => Ok ( Ord ) ,
105116 "PartialEq" => Ok ( PartialEq ) ,
106117 "PartialOrd" => Ok ( PartialOrd ) ,
118+ #[ cfg( feature = "serde" ) ]
119+ "Serialize" => Ok ( Serialize ) ,
120+ #[ cfg( not( feature = "serde" ) ) ]
121+ "Serialize" => Err ( Error :: serde_feature ( path. span ( ) ) ) ,
107122 #[ cfg( feature = "zeroize" ) ]
108123 "Zeroize" => Ok ( Zeroize ) ,
124+ #[ cfg( not( feature = "zeroize" ) ) ]
125+ "Zeroize" => Err ( Error :: zeroize_feature ( path. span ( ) ) ) ,
109126 #[ cfg( feature = "zeroize" ) ]
110127 "ZeroizeOnDrop" => Ok ( ZeroizeOnDrop ) ,
128+ #[ cfg( not( feature = "zeroize" ) ) ]
129+ "ZeroizeOnDrop" => Err ( Error :: zeroize_feature ( path. span ( ) ) ) ,
111130 "crate" => Err ( Error :: crate_ ( path. span ( ) ) ) ,
112131 _ => Err ( Error :: trait_ ( path. span ( ) ) ) ,
113132 }
@@ -170,6 +189,9 @@ pub enum DeriveTrait {
170189 PartialEq ,
171190 /// [`PartialOrd`].
172191 PartialOrd ,
192+ /// [`Serialize`](https://docs.rs/serde/latest/serde/derive.Serialize.html).
193+ #[ cfg( feature = "serde" ) ]
194+ Serialize ( serialize:: Serialize ) ,
173195 /// [`Zeroize`](https://docs.rs/zeroize/latest/zeroize/trait.Zeroize.html).
174196 #[ cfg( feature = "zeroize" ) ]
175197 Zeroize ( zeroize:: Zeroize ) ,
@@ -196,6 +218,8 @@ impl Deref for DeriveTrait {
196218 Ord => & ord:: Ord ,
197219 PartialEq => & partial_eq:: PartialEq ,
198220 PartialOrd => & partial_ord:: PartialOrd ,
221+ #[ cfg( feature = "serde" ) ]
222+ Serialize ( trait_) => trait_,
199223 #[ cfg( feature = "zeroize" ) ]
200224 Zeroize ( trait_) => trait_,
201225 #[ cfg( feature = "zeroize" ) ]
0 commit comments