File tree Expand file tree Collapse file tree 2 files changed +66
-0
lines changed
Expand file tree Collapse file tree 2 files changed +66
-0
lines changed Original file line number Diff line number Diff line change @@ -990,6 +990,19 @@ mod content {
990990 Ok ( TagContentOtherField :: Other )
991991 }
992992 }
993+
994+ fn visit_bytes < E > ( self , field : & [ u8 ] ) -> Result < Self :: Value , E >
995+ where
996+ E : de:: Error ,
997+ {
998+ if field == self . tag . as_bytes ( ) {
999+ Ok ( TagContentOtherField :: Tag )
1000+ } else if field == self . content . as_bytes ( ) {
1001+ Ok ( TagContentOtherField :: Content )
1002+ } else {
1003+ Ok ( TagContentOtherField :: Other )
1004+ }
1005+ }
9931006 }
9941007
9951008 /// Not public API
Original file line number Diff line number Diff line change @@ -2317,6 +2317,59 @@ fn test_internally_tagged_enum_new_type_with_unit() {
23172317 ) ;
23182318}
23192319
2320+ #[ test]
2321+ fn test_adjacently_tagged_enum_bytes ( ) {
2322+ #[ derive( Serialize , Deserialize , PartialEq , Debug ) ]
2323+ #[ serde( tag = "t" , content = "c" ) ]
2324+ enum Data {
2325+ A { a : i32 } ,
2326+ }
2327+
2328+ let data = Data :: A { a : 0 } ;
2329+
2330+ assert_tokens (
2331+ & data,
2332+ & [
2333+ Token :: Struct {
2334+ name : "Data" ,
2335+ len : 2 ,
2336+ } ,
2337+ Token :: Str ( "t" ) ,
2338+ Token :: Str ( "A" ) ,
2339+ Token :: Str ( "c" ) ,
2340+ Token :: Struct {
2341+ name : "A" ,
2342+ len : 1 ,
2343+ } ,
2344+ Token :: Str ( "a" ) ,
2345+ Token :: I32 ( 0 ) ,
2346+ Token :: StructEnd ,
2347+ Token :: StructEnd ,
2348+ ] ,
2349+ ) ;
2350+
2351+ assert_de_tokens (
2352+ & data,
2353+ & [
2354+ Token :: Struct {
2355+ name : "Data" ,
2356+ len : 2 ,
2357+ } ,
2358+ Token :: Bytes ( b"t" ) ,
2359+ Token :: Str ( "A" ) ,
2360+ Token :: Bytes ( b"c" ) ,
2361+ Token :: Struct {
2362+ name : "A" ,
2363+ len : 1 ,
2364+ } ,
2365+ Token :: Str ( "a" ) ,
2366+ Token :: I32 ( 0 ) ,
2367+ Token :: StructEnd ,
2368+ Token :: StructEnd ,
2369+ ] ,
2370+ ) ;
2371+ }
2372+
23202373#[ test]
23212374fn test_adjacently_tagged_enum_containing_flatten ( ) {
23222375 #[ derive( Serialize , Deserialize , PartialEq , Debug ) ]
You can’t perform that action at this time.
0 commit comments