File tree Expand file tree Collapse file tree 1 file changed +17
-6
lines changed Expand file tree Collapse file tree 1 file changed +17
-6
lines changed Original file line number Diff line number Diff line change 6161{
6262 input : & ' cursor mut & ' data [ u8 ] ,
6363 validator : V ,
64+ is_inner : bool ,
6465 _marker : PhantomData < R > ,
6566}
6667
7273 Self {
7374 input,
7475 validator,
76+ is_inner : false ,
7577 _marker : PhantomData ,
7678 }
7779 }
8385 RowBinaryDeserializer {
8486 input : self . input ,
8587 validator : self . validator . validate ( serde_type) ,
88+ is_inner : true ,
8689 _marker : PhantomData ,
8790 }
8891 }
@@ -263,12 +266,19 @@ where
263266
264267 #[ inline( always) ]
265268 fn deserialize_map < V : Visitor < ' data > > ( self , visitor : V ) -> Result < V :: Value > {
266- let len = self . read_size ( ) ?;
267- let deserializer = & mut self . inner ( SerdeType :: Map ( len) ) ;
268- visitor. visit_map ( RowBinaryMapAccess {
269- deserializer,
270- remaining : len,
271- } )
269+ if self . is_inner {
270+ let len = self . read_size ( ) ?;
271+ let deserializer = & mut self . inner ( SerdeType :: Map ( len) ) ;
272+ visitor. visit_map ( RowBinaryMapAccess {
273+ deserializer,
274+ remaining : len,
275+ } )
276+ } else {
277+ visitor. visit_map ( RowBinaryStructAsMapAccess {
278+ deserializer : self ,
279+ current_field_idx : 0 ,
280+ } )
281+ }
272282 }
273283
274284 #[ inline( always) ]
@@ -278,6 +288,7 @@ where
278288 fields : & ' static [ & ' static str ] ,
279289 visitor : V ,
280290 ) -> Result < V :: Value > {
291+ self . is_inner = true ;
281292 if !self . validator . is_field_order_wrong ( ) {
282293 visitor. visit_seq ( RowBinarySeqAccess {
283294 deserializer : self ,
You can’t perform that action at this time.
0 commit comments