Skip to content

Commit d6c3bcd

Browse files
committed
Update to serde 1.0
1 parent 04e705d commit d6c3bcd

File tree

3 files changed

+21
-17
lines changed

3 files changed

+21
-17
lines changed

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ test = false
3333
[dev-dependencies]
3434
rustc-test = "0.3"
3535
rustc-serialize = "0.3"
36-
serde_json = ">=0.6.1, <0.9"
36+
serde_json = "1.0"
3737

3838
bencher = "0.1"
3939

@@ -47,7 +47,7 @@ heapsize = {version = ">=0.4.1, <0.5", optional = true}
4747
idna = { version = "0.1.0", path = "./idna" }
4848
matches = "0.1"
4949
percent-encoding = { version = "1.0.0", path = "./percent_encoding" }
50-
serde = {version = ">=0.6.1, <0.9", optional = true}
50+
serde = {version = "1.0", optional = true}
5151

5252
[[bench]]
5353
name = "parse_url"

src/host.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ known_heap_size!(0, HostInternal);
2929

3030
#[cfg(feature="serde")]
3131
impl ::serde::Serialize for HostInternal {
32-
fn serialize<S>(&self, serializer: &mut S) -> Result<(), S::Error> where S: ::serde::Serializer {
32+
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: ::serde::Serializer {
3333
// This doesn’t use `derive` because that involves
3434
// large dependencies (that take a long time to build), and
3535
// either Macros 1.1 which are not stable yet or a cumbersome build script.
@@ -47,8 +47,8 @@ impl ::serde::Serialize for HostInternal {
4747
}
4848

4949
#[cfg(feature="serde")]
50-
impl ::serde::Deserialize for HostInternal {
51-
fn deserialize<D>(deserializer: &mut D) -> Result<Self, D::Error> where D: ::serde::Deserializer {
50+
impl<'de> ::serde::Deserialize<'de> for HostInternal {
51+
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: ::serde::Deserializer<'de> {
5252
use std::net::IpAddr;
5353
Ok(match ::serde::Deserialize::deserialize(deserializer)? {
5454
None => HostInternal::None,
@@ -92,8 +92,8 @@ pub enum Host<S=String> {
9292
}
9393

9494
#[cfg(feature="serde")]
95-
impl<S: ::serde::Serialize> ::serde::Serialize for Host<S> {
96-
fn serialize<R>(&self, serializer: &mut R) -> Result<(), R::Error> where R: ::serde::Serializer {
95+
impl<S: ::serde::Serialize> ::serde::Serialize for Host<S> {
96+
fn serialize<R>(&self, serializer: R) -> Result<R::Ok, R::Error> where R: ::serde::Serializer {
9797
use std::net::IpAddr;
9898
match *self {
9999
Host::Domain(ref s) => Ok(s),
@@ -104,8 +104,8 @@ impl<S: ::serde::Serialize> ::serde::Serialize for Host<S> {
104104
}
105105

106106
#[cfg(feature="serde")]
107-
impl<S: ::serde::Deserialize> ::serde::Deserialize for Host<S> {
108-
fn deserialize<D>(deserializer: &mut D) -> Result<Self, D::Error> where D: ::serde::Deserializer {
107+
impl<'de, S: ::serde::Deserialize<'de>> ::serde::Deserialize<'de> for Host<S> {
108+
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: ::serde::Deserializer<'de> {
109109
use std::net::IpAddr;
110110
Ok(match ::serde::Deserialize::deserialize(deserializer)? {
111111
Ok(s) => Host::Domain(s),

src/lib.rs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2028,7 +2028,7 @@ impl Url {
20282028
/// This method is only available if the `serde` Cargo feature is enabled.
20292029
#[cfg(feature = "serde")]
20302030
#[deny(unused)]
2031-
pub fn serialize_internal<S>(&self, serializer: &mut S) -> Result<(), S::Error> where S: serde::Serializer {
2031+
pub fn serialize_internal<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: serde::Serializer {
20322032
use serde::Serialize;
20332033
// Destructuring first lets us ensure that adding or removing fields forces this method
20342034
// to be updated
@@ -2050,8 +2050,8 @@ impl Url {
20502050
/// This method is only available if the `serde` Cargo feature is enabled.
20512051
#[cfg(feature = "serde")]
20522052
#[deny(unused)]
2053-
pub fn deserialize_internal<D>(deserializer: &mut D) -> Result<Self, D::Error> where D: serde::Deserializer {
2054-
use serde::{Deserialize, Error};
2053+
pub fn deserialize_internal<'de, D>(deserializer: D) -> Result<Self, D::Error> where D: serde::Deserializer<'de> {
2054+
use serde::de::{Deserialize, Error, Unexpected};
20552055
let (serialization, scheme_end, username_end,
20562056
host_start, host_end, host, port, path_start,
20572057
query_start, fragment_start) = Deserialize::deserialize(deserializer)?;
@@ -2068,7 +2068,10 @@ impl Url {
20682068
fragment_start: fragment_start
20692069
};
20702070
if cfg!(debug_assertions) {
2071-
url.check_invariants().map_err(|ref reason| Error::invalid_value(&reason))?
2071+
url.check_invariants().map_err(|reason| {
2072+
let reason: &str = &reason;
2073+
Error::invalid_value(Unexpected::Other("value"), &reason)
2074+
})?
20722075
}
20732076
Ok(url)
20742077
}
@@ -2230,7 +2233,7 @@ impl RangeArg for RangeTo<u32> {
22302233
/// This implementation is only available if the `serde` Cargo feature is enabled.
22312234
#[cfg(feature="serde")]
22322235
impl serde::Serialize for Url {
2233-
fn serialize<S>(&self, serializer: &mut S) -> Result<(), S::Error> where S: serde::Serializer {
2236+
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: serde::Serializer {
22342237
serializer.serialize_str(self.as_str())
22352238
}
22362239
}
@@ -2239,11 +2242,12 @@ impl serde::Serialize for Url {
22392242
///
22402243
/// This implementation is only available if the `serde` Cargo feature is enabled.
22412244
#[cfg(feature="serde")]
2242-
impl serde::Deserialize for Url {
2243-
fn deserialize<D>(deserializer: &mut D) -> Result<Url, D::Error> where D: serde::Deserializer {
2245+
impl<'de> serde::Deserialize<'de> for Url {
2246+
fn deserialize<D>(deserializer: D) -> Result<Url, D::Error> where D: serde::Deserializer<'de> {
2247+
use serde::de::{Unexpected, Error};
22442248
let string_representation: String = serde::Deserialize::deserialize(deserializer)?;
22452249
Url::parse(&string_representation).map_err(|err| {
2246-
serde::Error::invalid_value(err.description())
2250+
Error::invalid_value(Unexpected::Str(&string_representation), &err.description())
22472251
})
22482252
}
22492253
}

0 commit comments

Comments
 (0)