Commit 6acbe14 1 parent 208af19 commit 6acbe14 Copy full SHA for 6acbe14
File tree 1 file changed +29
-4
lines changed
1 file changed +29
-4
lines changed Original file line number Diff line number Diff line change @@ -2594,11 +2594,36 @@ fn deserialize_map(
2594
2594
}
2595
2595
Some ( path) => quote ! ( #path) ,
2596
2596
} ;
2597
+
2598
+ let no_variant_expr = if field. attrs . default ( ) . is_none ( ) {
2599
+ let span = field. original . span ( ) ;
2600
+ quote_spanned ! ( span=>
2601
+ return _serde:: __private:: Err (
2602
+ _serde:: de:: Error :: custom( _e. to_string( ) )
2603
+ ) ;
2604
+ )
2605
+ } else {
2606
+ let is_missing = Expr ( expr_is_missing ( field, cattrs) ) ;
2607
+ quote ! ( #is_missing)
2608
+ } ;
2609
+
2597
2610
quote ! {
2598
- let #name: #field_ty = #func(
2599
- _serde:: __private:: de:: FlatMapDeserializer (
2600
- & mut __collect,
2601
- _serde:: __private:: PhantomData ) ) ?;
2611
+ let #name: #field_ty = match #func(
2612
+ _serde:: __private:: de:: FlatMapDeserializer ( & mut __collect) ) {
2613
+ _serde:: __private:: Ok ( #name) => #name,
2614
+ _serde:: __private:: Err (
2615
+ _e @ _serde:: __private:: de:: FlatMapDeserializerError :: NoVariantFoundInFlattenedData ( ..)
2616
+ ) => {
2617
+ #no_variant_expr
2618
+ }
2619
+ _serde:: __private:: Err (
2620
+ _serde:: __private:: de:: FlatMapDeserializerError :: Message ( s)
2621
+ ) => {
2622
+ return _serde:: __private:: Err (
2623
+ _serde:: de:: Error :: custom( s)
2624
+ ) ;
2625
+ }
2626
+ } ;
2602
2627
}
2603
2628
} ) ;
2604
2629
You can’t perform that action at this time.
0 commit comments