diff --git a/url/Cargo.toml b/url/Cargo.toml index 969706d92..58d93b3b8 100644 --- a/url/Cargo.toml +++ b/url/Cargo.toml @@ -17,7 +17,7 @@ edition = "2018" rust-version = "1.56" [dev-dependencies] -serde = { version = "1.0", features = ["derive"] } +serde_crate = { package = "serde", version = "1.0", features = ["derive"] } serde_json = "1.0" bencher = "0.1" @@ -25,7 +25,8 @@ bencher = "0.1" form_urlencoded = { version = "1.2.0", path = "../form_urlencoded" } idna = { version = "0.4.0", path = "../idna" } percent-encoding = { version = "2.3.0", path = "../percent_encoding" } -serde = { version = "1.0", optional = true, features = ["derive"] } +serde_crate = { package = "serde", version = "1.0.186", optional = true } +serde_derive = { version = "1.0", optional = true } [features] default = [] @@ -33,6 +34,7 @@ default = [] debugger_visualizer = [] # Expose internal offsets of the URL. expose_internals = [] +serde = ["serde_crate", "serde_derive"] [[test]] name = "url_wpt" diff --git a/url/src/host.rs b/url/src/host.rs index 9931c2f87..6d6a5052a 100644 --- a/url/src/host.rs +++ b/url/src/host.rs @@ -12,11 +12,15 @@ use std::net::{Ipv4Addr, Ipv6Addr}; use percent_encoding::{percent_decode, utf8_percent_encode, CONTROLS}; #[cfg(feature = "serde")] -use serde::{Deserialize, Serialize}; +use serde_derive::{Deserialize, Serialize}; use crate::parser::{ParseError, ParseResult}; -#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))] +#[cfg_attr( + feature = "serde", + derive(Deserialize, Serialize), + serde(crate = "serde"), +)] #[derive(Copy, Clone, Debug, Eq, PartialEq)] pub(crate) enum HostInternal { None, @@ -37,7 +41,11 @@ impl From> for HostInternal { } /// The host name of an URL. -#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))] +#[cfg_attr( + feature = "serde", + derive(Deserialize, Serialize), + serde(crate = "serde"), +)] #[derive(Clone, Debug, Eq, Ord, PartialOrd, Hash)] pub enum Host { /// A DNS domain name, as '.' dot-separated labels. diff --git a/url/src/lib.rs b/url/src/lib.rs index 58c7c07cd..4b711a90f 100644 --- a/url/src/lib.rs +++ b/url/src/lib.rs @@ -143,7 +143,7 @@ url = { version = "2", features = ["debugger_visualizer"] } pub use form_urlencoded; #[cfg(feature = "serde")] -extern crate serde; +extern crate serde_crate as serde; use crate::host::HostInternal; use crate::parser::{to_u32, Context, Parser, SchemeType, PATH_SEGMENT, USERINFO}; diff --git a/url/tests/wpt.rs b/url/tests/wpt.rs index 701044d67..509dec404 100644 --- a/url/tests/wpt.rs +++ b/url/tests/wpt.rs @@ -8,6 +8,8 @@ //! Data-driven tests imported from web-platform-tests +extern crate serde_crate as serde; + use std::collections::HashMap; use std::fmt::Write; use std::panic; @@ -16,6 +18,7 @@ use serde_json::Value; use url::Url; #[derive(Debug, serde::Deserialize)] +#[serde(crate = "serde")] struct UrlTest { input: String, base: Option, @@ -24,7 +27,7 @@ struct UrlTest { } #[derive(Debug, serde::Deserialize)] -#[serde(untagged)] +#[serde(crate = "serde", untagged)] #[allow(clippy::large_enum_variant)] enum UrlTestResult { Ok(UrlTestOk), @@ -32,6 +35,7 @@ enum UrlTestResult { } #[derive(Debug, serde::Deserialize)] +#[serde(crate = "serde")] struct UrlTestOk { href: String, protocol: String, @@ -46,11 +50,13 @@ struct UrlTestOk { } #[derive(Debug, serde::Deserialize)] +#[serde(crate = "serde")] struct UrlTestFail { failure: bool, } #[derive(Debug, serde::Deserialize)] +#[serde(crate = "serde")] struct SetterTest { href: String, new_value: String, @@ -58,6 +64,7 @@ struct SetterTest { } #[derive(Debug, serde::Deserialize)] +#[serde(crate = "serde")] struct SetterTestExpected { href: Option, protocol: Option,