1
1
use serde:: { de, ser} ;
2
+ use serde:: ser:: SerializeMap ;
2
3
use std:: collections:: HashMap ;
4
+ use std:: fmt;
3
5
4
6
use :: { GraphQLError , Value } ;
5
7
use ast:: InputValue ;
@@ -8,26 +10,27 @@ use parser::{ParseError, Spanning, SourcePosition};
8
10
use validation:: RuleError ;
9
11
10
12
impl ser:: Serialize for ExecutionError {
11
- fn serialize < S > ( & self , serializer : & mut S ) -> Result < ( ) , S :: Error >
13
+ fn serialize < S > ( & self , serializer : S ) -> Result < S :: Ok , S :: Error >
12
14
where S : ser:: Serializer ,
13
15
{
14
- let mut state = try!( serializer. serialize_map ( Some ( 3 ) ) ) ;
16
+ let mut map = try!( serializer. serialize_map ( Some ( 3 ) ) ) ;
15
17
16
- try!( serializer . serialize_map_key ( & mut state , "message" ) ) ;
17
- try!( serializer . serialize_map_value ( & mut state , self . message ( ) ) ) ;
18
+ try!( map . serialize_key ( "message" ) ) ;
19
+ try!( map . serialize_value ( self . message ( ) ) ) ;
18
20
19
- try!( serializer. serialize_map_key ( & mut state, "locations" ) ) ;
20
- try!( serializer. serialize_map_value ( & mut state, vec ! [ self . location( ) ] ) ) ;
21
+ let locations = vec ! [ self . location( ) ] ;
22
+ try!( map. serialize_key ( "locations" ) ) ;
23
+ try!( map. serialize_value ( & locations) ) ;
21
24
22
- try!( serializer . serialize_map_key ( & mut state , "path" ) ) ;
23
- try!( serializer . serialize_map_value ( & mut state , self . path ( ) ) ) ;
25
+ try!( map . serialize_key ( "path" ) ) ;
26
+ try!( map . serialize_value ( self . path ( ) ) ) ;
24
27
25
- serializer . serialize_map_end ( state )
28
+ map . end ( )
26
29
}
27
30
}
28
31
29
32
impl < ' a > ser:: Serialize for GraphQLError < ' a > {
30
- fn serialize < S > ( & self , serializer : & mut S ) -> Result < ( ) , S :: Error >
33
+ fn serialize < S > ( & self , serializer : S ) -> Result < S :: Ok , S :: Error >
31
34
where S : ser:: Serializer ,
32
35
{
33
36
match * self {
@@ -47,58 +50,62 @@ impl<'a> ser::Serialize for GraphQLError<'a> {
47
50
}
48
51
49
52
impl de:: Deserialize for InputValue {
50
- fn deserialize < D > ( deserializer : & mut D ) -> Result < InputValue , D :: Error >
53
+ fn deserialize < D > ( deserializer : D ) -> Result < InputValue , D :: Error >
51
54
where D : de:: Deserializer ,
52
55
{
53
56
struct InputValueVisitor ;
54
57
55
58
impl de:: Visitor for InputValueVisitor {
56
59
type Value = InputValue ;
57
60
58
- fn visit_bool < E > ( & mut self , value : bool ) -> Result < InputValue , E > {
61
+ fn expecting ( & self , formatter : & mut fmt:: Formatter ) -> fmt:: Result {
62
+ formatter. write_str ( "a valid input value" )
63
+ }
64
+
65
+ fn visit_bool < E > ( self , value : bool ) -> Result < InputValue , E > {
59
66
Ok ( InputValue :: boolean ( value) )
60
67
}
61
68
62
- fn visit_i64 < E > ( & mut self , value : i64 ) -> Result < InputValue , E > {
69
+ fn visit_i64 < E > ( self , value : i64 ) -> Result < InputValue , E > {
63
70
Ok ( InputValue :: int ( value) )
64
71
}
65
72
66
- fn visit_u64 < E > ( & mut self , value : u64 ) -> Result < InputValue , E >
73
+ fn visit_u64 < E > ( self , value : u64 ) -> Result < InputValue , E >
67
74
where E : de:: Error ,
68
75
{
69
76
self . visit_f64 ( value as f64 )
70
77
}
71
78
72
- fn visit_f64 < E > ( & mut self , value : f64 ) -> Result < InputValue , E > {
79
+ fn visit_f64 < E > ( self , value : f64 ) -> Result < InputValue , E > {
73
80
Ok ( InputValue :: float ( value) )
74
81
}
75
82
76
- fn visit_str < E > ( & mut self , value : & str ) -> Result < InputValue , E >
83
+ fn visit_str < E > ( self , value : & str ) -> Result < InputValue , E >
77
84
where E : de:: Error ,
78
85
{
79
86
self . visit_string ( value. into ( ) )
80
87
}
81
88
82
- fn visit_string < E > ( & mut self , value : String ) -> Result < InputValue , E > {
89
+ fn visit_string < E > ( self , value : String ) -> Result < InputValue , E > {
83
90
Ok ( InputValue :: string ( value) )
84
91
}
85
92
86
- fn visit_none < E > ( & mut self ) -> Result < InputValue , E > {
93
+ fn visit_none < E > ( self ) -> Result < InputValue , E > {
87
94
Ok ( InputValue :: null ( ) )
88
95
}
89
96
90
- fn visit_unit < E > ( & mut self ) -> Result < InputValue , E > {
97
+ fn visit_unit < E > ( self ) -> Result < InputValue , E > {
91
98
Ok ( InputValue :: null ( ) )
92
99
}
93
100
94
- fn visit_seq < V > ( & mut self , visitor : V ) -> Result < InputValue , V :: Error >
101
+ fn visit_seq < V > ( self , visitor : V ) -> Result < InputValue , V :: Error >
95
102
where V : de:: SeqVisitor ,
96
103
{
97
104
let values = try!( de:: impls:: VecVisitor :: new ( ) . visit_seq ( visitor) ) ;
98
105
Ok ( InputValue :: list ( values) )
99
106
}
100
107
101
- fn visit_map < V > ( & mut self , visitor : V ) -> Result < InputValue , V :: Error >
108
+ fn visit_map < V > ( self , visitor : V ) -> Result < InputValue , V :: Error >
102
109
where V : de:: MapVisitor ,
103
110
{
104
111
let values = try!( de:: impls:: HashMapVisitor :: < String , InputValue , _ > :: new ( )
@@ -112,7 +119,7 @@ impl de::Deserialize for InputValue {
112
119
}
113
120
114
121
impl ser:: Serialize for InputValue {
115
- fn serialize < S > ( & self , serializer : & mut S ) -> Result < ( ) , S :: Error >
122
+ fn serialize < S > ( & self , serializer : S ) -> Result < S :: Ok , S :: Error >
116
123
where S : ser:: Serializer ,
117
124
{
118
125
match * self {
@@ -135,62 +142,64 @@ impl ser::Serialize for InputValue {
135
142
}
136
143
137
144
impl ser:: Serialize for RuleError {
138
- fn serialize < S > ( & self , serializer : & mut S ) -> Result < ( ) , S :: Error >
145
+ fn serialize < S > ( & self , serializer : S ) -> Result < S :: Ok , S :: Error >
139
146
where S : ser:: Serializer ,
140
147
{
141
- let mut state = try!( serializer. serialize_map ( Some ( 2 ) ) ) ;
148
+ let mut map = try!( serializer. serialize_map ( Some ( 2 ) ) ) ;
142
149
143
- try!( serializer . serialize_map_key ( & mut state , "message" ) ) ;
144
- try!( serializer . serialize_map_value ( & mut state , self . message ( ) ) ) ;
150
+ try!( map . serialize_key ( "message" ) ) ;
151
+ try!( map . serialize_value ( self . message ( ) ) ) ;
145
152
146
- try!( serializer . serialize_map_key ( & mut state , "locations" ) ) ;
147
- try!( serializer . serialize_map_value ( & mut state , self . locations ( ) ) ) ;
153
+ try!( map . serialize_key ( "locations" ) ) ;
154
+ try!( map . serialize_value ( self . locations ( ) ) ) ;
148
155
149
- serializer . serialize_map_end ( state )
156
+ map . end ( )
150
157
}
151
158
}
152
159
153
160
impl ser:: Serialize for SourcePosition {
154
- fn serialize < S > ( & self , serializer : & mut S ) -> Result < ( ) , S :: Error >
161
+ fn serialize < S > ( & self , serializer : S ) -> Result < S :: Ok , S :: Error >
155
162
where S : ser:: Serializer ,
156
163
{
157
- let mut state = try!( serializer. serialize_map ( Some ( 2 ) ) ) ;
164
+ let mut map = try!( serializer. serialize_map ( Some ( 2 ) ) ) ;
158
165
159
- try!( serializer. serialize_map_key ( & mut state, "line" ) ) ;
160
- try!( serializer. serialize_map_value ( & mut state, self . line ( ) + 1 ) ) ;
166
+ let line = self . line ( ) + 1 ;
167
+ try!( map. serialize_key ( "line" ) ) ;
168
+ try!( map. serialize_value ( & line) ) ;
161
169
162
- try!( serializer. serialize_map_key ( & mut state, "column" ) ) ;
163
- try!( serializer. serialize_map_value ( & mut state, self . column ( ) + 1 ) ) ;
170
+ let column = self . column ( ) + 1 ;
171
+ try!( map. serialize_key ( "column" ) ) ;
172
+ try!( map. serialize_value ( & column) ) ;
164
173
165
- serializer . serialize_map_end ( state )
174
+ map . end ( )
166
175
}
167
176
}
168
177
169
178
impl < ' a > ser:: Serialize for Spanning < ParseError < ' a > > {
170
- fn serialize < S > ( & self , serializer : & mut S ) -> Result < ( ) , S :: Error >
179
+ fn serialize < S > ( & self , serializer : S ) -> Result < S :: Ok , S :: Error >
171
180
where S : ser:: Serializer ,
172
181
{
173
- let mut state = try!( serializer. serialize_map ( Some ( 2 ) ) ) ;
182
+ let mut map = try!( serializer. serialize_map ( Some ( 2 ) ) ) ;
174
183
175
184
let message = format ! ( "{}" , self . item) ;
176
- try!( serializer . serialize_map_key ( & mut state , "message" ) ) ;
177
- try!( serializer . serialize_map_value ( & mut state , message) ) ;
185
+ try!( map . serialize_key ( "message" ) ) ;
186
+ try!( map . serialize_value ( & message) ) ;
178
187
179
188
let mut location = HashMap :: new ( ) ;
180
189
location. insert ( "line" . to_owned ( ) , self . start . line ( ) + 1 ) ;
181
190
location. insert ( "column" . to_owned ( ) , self . start . column ( ) + 1 ) ;
182
191
183
192
let locations = vec ! [ location] ;
184
193
185
- try!( serializer . serialize_map_key ( & mut state , "locations" ) ) ;
186
- try!( serializer . serialize_map_value ( & mut state , locations) ) ;
194
+ try!( map . serialize_key ( "locations" ) ) ;
195
+ try!( map . serialize_value ( & locations) ) ;
187
196
188
- serializer . serialize_map_end ( state )
197
+ map . end ( )
189
198
}
190
199
}
191
200
192
201
impl ser:: Serialize for Value {
193
- fn serialize < S > ( & self , serializer : & mut S ) -> Result < ( ) , S :: Error >
202
+ fn serialize < S > ( & self , serializer : S ) -> Result < S :: Ok , S :: Error >
194
203
where S : ser:: Serializer ,
195
204
{
196
205
match * self {
0 commit comments