Skip to content

Commit 41a33a3

Browse files
committed
Merge branch 'serde-1.0' of https://github.com/zaeleus/juniper into zaeleus-serde-1.0
# Conflicts: # Cargo.toml
2 parents 7d7e7e6 + 0f51824 commit 41a33a3

File tree

2 files changed

+24
-16
lines changed

2 files changed

+24
-16
lines changed

Cargo.toml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,12 @@ iron-handlers = ["iron", "serde_json", "urlencoded"]
2525
expose-test-schema = []
2626

2727
[dependencies]
28-
serde = { version = "^0.9.1" }
29-
serde_derive = {version="^0.9.1" }
28+
serde = { version = "^1.0.8" }
29+
serde_derive = {version="^1.0.8" }
3030

3131
iron = { version = "^0.5.1", optional = true }
32-
serde_json = {version ="^0.9.1", optional = true }
33-
urlencoded = {version="0.5", optional=true}
34-
32+
serde_json = { version = "^1.0.2", optional = true }
33+
urlencoded = { version = "^0.5.0", optional = true }
3534

3635
[dev-dependencies]
3736
iron = "^0.5.1"

src/integrations/serde.rs

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,13 @@ impl<'a> ser::Serialize for GraphQLError<'a> {
5050
}
5151
}
5252

53-
impl de::Deserialize for InputValue {
53+
impl<'de> de::Deserialize<'de> for InputValue {
5454
fn deserialize<D>(deserializer: D) -> Result<InputValue, D::Error>
55-
where D: de::Deserializer,
55+
where D: de::Deserializer<'de>,
5656
{
5757
struct InputValueVisitor;
5858

59-
impl de::Visitor for InputValueVisitor {
59+
impl<'de> de::Visitor<'de> for InputValueVisitor {
6060
type Value = InputValue;
6161

6262
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
@@ -99,23 +99,32 @@ impl de::Deserialize for InputValue {
9999
Ok(InputValue::null())
100100
}
101101

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>,
104104
{
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+
106111
Ok(InputValue::list(values))
107112
}
108113

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>,
111116
{
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+
114123
Ok(InputValue::object(values))
115124
}
116125
}
117126

118-
deserializer.deserialize(InputValueVisitor)
127+
deserializer.deserialize_any(InputValueVisitor)
119128
}
120129
}
121130

0 commit comments

Comments
 (0)