File tree 2 files changed +28
-1
lines changed
2 files changed +28
-1
lines changed Original file line number Diff line number Diff line change @@ -479,6 +479,14 @@ impl<'de> EnumAccess<'de> for EnumDeserializer {
479
479
}
480
480
}
481
481
482
+ impl < ' de > IntoDeserializer < ' de , Error > for Value {
483
+ type Deserializer = Self ;
484
+
485
+ fn into_deserializer ( self ) -> Self :: Deserializer {
486
+ self
487
+ }
488
+ }
489
+
482
490
struct VariantDeserializer {
483
491
value : Option < Value > ,
484
492
}
Original file line number Diff line number Diff line change @@ -26,7 +26,7 @@ use std::{f32, f64};
26
26
use std:: { i16, i32, i64, i8} ;
27
27
use std:: { u16, u32, u64, u8} ;
28
28
29
- use serde:: de:: { self , Deserialize , IgnoredAny } ;
29
+ use serde:: de:: { self , Deserialize , IgnoredAny , IntoDeserializer } ;
30
30
use serde:: ser:: { self , Serialize , Serializer } ;
31
31
32
32
use serde_bytes:: { ByteBuf , Bytes } ;
@@ -2179,3 +2179,22 @@ fn test_borrow_in_map_key() {
2179
2179
let value = json ! ( { "map" : { "1" : null } } ) ;
2180
2180
Outer :: deserialize ( & value) . unwrap ( ) ;
2181
2181
}
2182
+
2183
+ #[ test]
2184
+ fn test_value_into_deserializer ( ) {
2185
+ #[ derive( Deserialize ) ]
2186
+ struct Outer {
2187
+ inner : Inner ,
2188
+ }
2189
+
2190
+ #[ derive( Deserialize ) ]
2191
+ struct Inner {
2192
+ string : String ,
2193
+ }
2194
+
2195
+ let mut map = BTreeMap :: new ( ) ;
2196
+ map. insert ( "inner" , json ! ( { "string" : "Hello World" } ) ) ;
2197
+
2198
+ let outer = Outer :: deserialize ( map. into_deserializer ( ) ) . unwrap ( ) ;
2199
+ assert_eq ! ( outer. inner. string, "Hello World" ) ;
2200
+ }
You can’t perform that action at this time.
0 commit comments