@@ -56,8 +56,23 @@ pub struct ErrorMetadata {
56
56
}
57
57
58
58
/// Builder for [`ErrorMetadata`].
59
+ #[ cfg_attr(
60
+ all( aws_sdk_unstable, feature = "serde-serialize" ) ,
61
+ derive( serde:: Serialize )
62
+ ) ]
63
+ #[ cfg_attr(
64
+ all( aws_sdk_unstable, feature = "serde-deserialize" ) ,
65
+ derive( serde:: Deserialize )
66
+ ) ]
59
67
#[ derive( Debug , Default ) ]
60
68
pub struct Builder {
69
+ #[ cfg_attr(
70
+ any(
71
+ all( aws_sdk_unstable, feature = "serde-deserialize" ) ,
72
+ all( aws_sdk_unstable, feature = "serde-serialize" )
73
+ ) ,
74
+ serde( flatten)
75
+ ) ]
61
76
inner : ErrorMetadata ,
62
77
}
63
78
@@ -173,3 +188,22 @@ impl fmt::Display for ErrorMetadata {
173
188
}
174
189
175
190
impl std:: error:: Error for ErrorMetadata { }
191
+
192
+ #[ cfg( all( test, any(
193
+ all( aws_sdk_unstable, feature = "serde-deserialize" ) ,
194
+ all( aws_sdk_unstable, feature = "serde-serialize" )
195
+ ) ) ) ]
196
+ mod test {
197
+ use super :: * ;
198
+
199
+ #[ test]
200
+ /// tests de/ser on ErrorMetaData.
201
+ fn test_error_meta_data ( ) {
202
+ let data = Builder :: default ( ) . code ( "code" ) . message ( "message" ) . custom ( "hello" , "world" ) ;
203
+ let ok = serde_json:: to_string_pretty ( & EMPTY_ERROR_METADATA ) . unwrap ( ) ;
204
+ assert_eq ! ( & ok, include_str!( "../../test-data/error_meta_data_empty.json" ) ) ;
205
+ assert_eq ! ( serde_json:: from_str( include_str!( "../../test-data/error_meta_data.json" ) ) . unwrap( ) , & data) ;
206
+ assert_eq ! ( serde_json:: from_str( include_str!( "../../test-data/error_meta_data.json" ) ) . unwrap( ) , data. build( ) ) ;
207
+
208
+ }
209
+ }
0 commit comments