@@ -88,6 +88,7 @@ impl Slice {
8888/// Compression algorithm
8989#[ derive( Clone , Copy , Debug , Deserialize , PartialEq ) ]
9090#[ serde( rename_all = "lowercase" ) ]
91+ #[ serde( tag = "id" ) ]
9192pub enum Compression {
9293 /// Gzip
9394 Gzip ,
@@ -362,11 +363,10 @@ mod tests {
362363 Token :: SeqEnd ,
363364 Token :: Str ( "compression" ) ,
364365 Token :: Some ,
365- Token :: Enum {
366- name : "Compression" ,
367- } ,
366+ Token :: Map { len : None } ,
367+ Token :: Str ( "id" ) ,
368368 Token :: Str ( "gzip" ) ,
369- Token :: Unit ,
369+ Token :: MapEnd ,
370370 Token :: StructEnd ,
371371 ] ,
372372 ) ;
@@ -643,11 +643,10 @@ mod tests {
643643 } ,
644644 Token :: Str ( "compression" ) ,
645645 Token :: Some ,
646- Token :: Enum {
647- name : "Compression" ,
648- } ,
646+ Token :: Map { len : None } ,
647+ Token :: Str ( "id" ) ,
649648 Token :: Str ( "foo" ) ,
650- Token :: StructEnd ,
649+ Token :: MapEnd ,
651650 ] ,
652651 "unknown variant `foo`, expected `gzip` or `zlib`" ,
653652 )
@@ -675,7 +674,7 @@ mod tests {
675674
676675 #[ test]
677676 fn test_json_optional_fields ( ) {
678- let json = r#"{"source": "http://example.com", "bucket": "bar", "object": "baz", "dtype": "int32", "offset": 4, "size": 8, "shape": [2, 5], "order": "C", "selection": [[1, 2, 3], [4, 5, 6]], "compression": " gzip"}"# ;
677+ let json = r#"{"source": "http://example.com", "bucket": "bar", "object": "baz", "dtype": "int32", "offset": 4, "size": 8, "shape": [2, 5], "order": "C", "selection": [[1, 2, 3], [4, 5, 6]], "compression": {"id": " gzip"} }"# ;
679678 let request_data = serde_json:: from_str :: < RequestData > ( json) . unwrap ( ) ;
680679 assert_eq ! ( request_data, get_test_request_data_optional( ) ) ;
681680 }
0 commit comments