diff --git a/ruma-identifiers/CHANGELOG.md b/ruma-identifiers/CHANGELOG.md index 04921662..8cabc0c0 100644 --- a/ruma-identifiers/CHANGELOG.md +++ b/ruma-identifiers/CHANGELOG.md @@ -3,6 +3,8 @@ Bug fixes: * Fix key algorithm serde (de)serialization +* Fix `key_algorithms::{DeviceKeyAlgorithm, ServerKeyAlgorithm}` not implementing `Deserialize` and + `Serialize` with `default-features = false` + `features = ["serde", …]` Breaking changes: diff --git a/ruma-identifiers/Cargo.toml b/ruma-identifiers/Cargo.toml index 89e7292c..321a42c7 100644 --- a/ruma-identifiers/Cargo.toml +++ b/ruma-identifiers/Cargo.toml @@ -20,14 +20,15 @@ all-features = true rustdoc-args = ["--cfg", "docsrs"] [features] -default = ["serde", "ruma-identifiers-validation/serde"] +default = ["serde"] +serde = ["serde1", "ruma-identifiers-validation/serde"] [dependencies] either = { version = "1.5.3", optional = true } rand = { version = "0.7.3", optional = true } ruma-identifiers-macros = { version = "=0.17.3", path = "../ruma-identifiers-macros" } ruma-identifiers-validation = { version = "0.1.1", path = "../ruma-identifiers-validation" } -serde = { version = "1.0.114", optional = true, features = ["derive"] } +serde1 = { package = "serde", version = "1.0.114", optional = true, features = ["derive"] } strum = { version = "0.19.2", features = ["derive"] } [dev-dependencies] diff --git a/ruma-identifiers/src/device_id.rs b/ruma-identifiers/src/device_id.rs index c0e92651..160f82a2 100644 --- a/ruma-identifiers/src/device_id.rs +++ b/ruma-identifiers/src/device_id.rs @@ -14,7 +14,7 @@ use crate::generate_localpart; /// provided simply for its semantic value. #[repr(transparent)] #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] -#[cfg_attr(feature = "serde", derive(serde::Serialize), serde(transparent))] +#[cfg_attr(feature = "serde", derive(serde1::Serialize), serde(transparent, crate = "serde1"))] pub struct DeviceId(str); impl DeviceId { @@ -112,10 +112,10 @@ impl Display for DeviceId { } #[cfg(feature = "serde")] -impl<'de> serde::Deserialize<'de> for Box { +impl<'de> serde1::Deserialize<'de> for Box { fn deserialize(deserializer: D) -> Result where - D: serde::Deserializer<'de>, + D: serde1::Deserializer<'de>, { crate::deserialize_id(deserializer, "An IP address or hostname") } diff --git a/ruma-identifiers/src/lib.rs b/ruma-identifiers/src/lib.rs index b056b489..5a9d5bb7 100644 --- a/ruma-identifiers/src/lib.rs +++ b/ruma-identifiers/src/lib.rs @@ -12,7 +12,7 @@ use std::convert::TryFrom; #[cfg(feature = "serde")] -use serde::de::{self, Deserialize as _, Deserializer, Unexpected}; +use serde1::de::{self, Deserialize as _, Deserializer, Unexpected}; #[doc(inline)] pub use crate::{ diff --git a/ruma-identifiers/src/macros.rs b/ruma-identifiers/src/macros.rs index 01c69c8c..f7577d6b 100644 --- a/ruma-identifiers/src/macros.rs +++ b/ruma-identifiers/src/macros.rs @@ -102,21 +102,21 @@ macro_rules! common_impls { } } - #[cfg(feature = "serde")] - impl ::serde::Serialize for $id { + #[cfg(feature = "serde1")] + impl ::serde1::Serialize for $id { fn serialize(&self, serializer: S) -> Result where - S: ::serde::Serializer, + S: ::serde1::Serializer, { serializer.serialize_str(self.as_str()) } } - #[cfg(feature = "serde")] - impl<'de> ::serde::Deserialize<'de> for $id { + #[cfg(feature = "serde1")] + impl<'de> ::serde1::Deserialize<'de> for $id { fn deserialize(deserializer: D) -> Result where - D: ::serde::Deserializer<'de>, + D: ::serde1::Deserializer<'de>, { crate::deserialize_id(deserializer, $desc) } diff --git a/ruma-identifiers/src/room_version_id.rs b/ruma-identifiers/src/room_version_id.rs index d9bb3775..367fdbe5 100644 --- a/ruma-identifiers/src/room_version_id.rs +++ b/ruma-identifiers/src/room_version_id.rs @@ -7,7 +7,7 @@ use std::{ }; #[cfg(feature = "serde")] -use serde::{Deserialize, Deserializer, Serialize, Serializer}; +use serde1::{Deserialize, Deserializer, Serialize, Serializer}; use crate::Error; diff --git a/ruma-identifiers/src/server_name.rs b/ruma-identifiers/src/server_name.rs index fc4e1764..aa401156 100644 --- a/ruma-identifiers/src/server_name.rs +++ b/ruma-identifiers/src/server_name.rs @@ -13,7 +13,7 @@ use crate::Error; /// A Matrix-spec compliant server name. #[repr(transparent)] #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] -#[cfg_attr(feature = "serde", derive(serde::Serialize), serde(transparent))] +#[cfg_attr(feature = "serde", derive(serde1::Serialize), serde(transparent, crate = "serde1"))] pub struct ServerName(str); impl ServerName { @@ -119,10 +119,10 @@ impl Display for ServerName { } #[cfg(feature = "serde")] -impl<'de> serde::Deserialize<'de> for Box { +impl<'de> serde1::Deserialize<'de> for Box { fn deserialize(deserializer: D) -> Result where - D: serde::Deserializer<'de>, + D: serde1::Deserializer<'de>, { crate::deserialize_id(deserializer, "An IP address or hostname") }