@@ -50,13 +50,13 @@ impl<'a> ser::Serialize for GraphQLError<'a> {
50
50
}
51
51
}
52
52
53
- impl de:: Deserialize for InputValue {
53
+ impl < ' de > de:: Deserialize < ' de > for InputValue {
54
54
fn deserialize < D > ( deserializer : D ) -> Result < InputValue , D :: Error >
55
- where D : de:: Deserializer ,
55
+ where D : de:: Deserializer < ' de > ,
56
56
{
57
57
struct InputValueVisitor ;
58
58
59
- impl de:: Visitor for InputValueVisitor {
59
+ impl < ' de > de:: Visitor < ' de > for InputValueVisitor {
60
60
type Value = InputValue ;
61
61
62
62
fn expecting ( & self , formatter : & mut fmt:: Formatter ) -> fmt:: Result {
@@ -99,23 +99,32 @@ impl de::Deserialize for InputValue {
99
99
Ok ( InputValue :: null ( ) )
100
100
}
101
101
102
- fn visit_seq < V > ( self , visitor : V ) -> Result < InputValue , V :: Error >
103
- where V : de:: SeqVisitor ,
102
+ fn visit_seq < V > ( self , mut visitor : V ) -> Result < InputValue , V :: Error >
103
+ where V : de:: SeqAccess < ' de > ,
104
104
{
105
- let values = try!( de:: impls:: VecVisitor :: new ( ) . visit_seq ( visitor) ) ;
105
+ let mut values = Vec :: new ( ) ;
106
+
107
+ while let Some ( el) = try!( visitor. next_element ( ) ) {
108
+ values. push ( el) ;
109
+ }
110
+
106
111
Ok ( InputValue :: list ( values) )
107
112
}
108
113
109
- fn visit_map < V > ( self , visitor : V ) -> Result < InputValue , V :: Error >
110
- where V : de:: MapVisitor ,
114
+ fn visit_map < V > ( self , mut visitor : V ) -> Result < InputValue , V :: Error >
115
+ where V : de:: MapAccess < ' de > ,
111
116
{
112
- let values = try!( de:: impls:: HashMapVisitor :: < String , InputValue , _ > :: new ( )
113
- . visit_map ( visitor) ) ;
117
+ let mut values: HashMap < String , InputValue > = HashMap :: new ( ) ;
118
+
119
+ while let Some ( ( key, value) ) = try!( visitor. next_entry ( ) ) {
120
+ values. insert ( key, value) ;
121
+ }
122
+
114
123
Ok ( InputValue :: object ( values) )
115
124
}
116
125
}
117
126
118
- deserializer. deserialize ( InputValueVisitor )
127
+ deserializer. deserialize_any ( InputValueVisitor )
119
128
}
120
129
}
121
130
0 commit comments