diff --git a/Cargo.toml b/Cargo.toml index 6265d019..d2db314a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,8 +11,8 @@ repository = "https://github.com/ruma/ruma-events" version = "0.7.0" [dependencies] -ruma-identifiers = "0.10" -ruma-signatures = "0.2" -serde = "0.9" -serde_derive = "0.9" -serde_json = "0.9" +ruma-identifiers = "0.11" +ruma-signatures = "0.3" +serde = "1.0" +serde_derive = "1.0" +serde_json = "1.0" diff --git a/src/collections/all.rs b/src/collections/all.rs index 5a2235b1..b4f80273 100644 --- a/src/collections/all.rs +++ b/src/collections/all.rs @@ -192,8 +192,8 @@ impl Serialize for Event { } } -impl Deserialize for Event { - fn deserialize(deserializer: D) -> Result where D: Deserializer { +impl<'de> Deserialize<'de> for Event { + fn deserialize(deserializer: D) -> Result where D: Deserializer<'de> { let value: Value = try!(Deserialize::deserialize(deserializer)); let event_type_value = match value.get("type") { @@ -439,8 +439,8 @@ impl Serialize for RoomEvent { } } -impl Deserialize for RoomEvent { - fn deserialize(deserializer: D) -> Result where D: Deserializer { +impl<'de> Deserialize<'de> for RoomEvent { + fn deserialize(deserializer: D) -> Result where D: Deserializer<'de> { let value: Value = try!(Deserialize::deserialize(deserializer)); let event_type_value = match value.get("type") { @@ -642,8 +642,8 @@ impl Serialize for StateEvent { } } -impl Deserialize for StateEvent { - fn deserialize(deserializer: D) -> Result where D: Deserializer { +impl<'de> Deserialize<'de> for StateEvent { + fn deserialize(deserializer: D) -> Result where D: Deserializer<'de> { let value: Value = try!(Deserialize::deserialize(deserializer)); let event_type_value = match value.get("type") { diff --git a/src/collections/only.rs b/src/collections/only.rs index be4bfe37..aa314337 100644 --- a/src/collections/only.rs +++ b/src/collections/only.rs @@ -65,8 +65,8 @@ impl Serialize for Event { } } -impl Deserialize for Event { - fn deserialize(deserializer: D) -> Result where D: Deserializer { +impl<'de> Deserialize<'de> for Event { + fn deserialize(deserializer: D) -> Result where D: Deserializer<'de> { let value: Value = try!(Deserialize::deserialize(deserializer)); let event_type_value = match value.get("type") { @@ -146,8 +146,8 @@ impl Serialize for RoomEvent { } } -impl Deserialize for RoomEvent { - fn deserialize(deserializer: D) -> Result where D: Deserializer { +impl<'de> Deserialize<'de> for RoomEvent { + fn deserialize(deserializer: D) -> Result where D: Deserializer<'de> { let value: Value = try!(Deserialize::deserialize(deserializer)); let event_type_value = match value.get("type") { diff --git a/src/lib.rs b/src/lib.rs index 09ccbcb1..3dbb6501 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -183,9 +183,9 @@ pub enum EventType { } /// A basic event. -pub trait Event: Debug + Deserialize + Serialize { +pub trait Event where Self: Debug + for<'a> Deserialize<'a> + Serialize { /// The event-type-specific payload this event carries. - type Content: Debug + Deserialize + Serialize; + type Content: Debug + for<'a> Deserialize<'a> + Serialize; /// The event's content. fn content(&self) -> &Self::Content; @@ -307,11 +307,11 @@ impl Serialize for EventType { } } -impl Deserialize for EventType { - fn deserialize(deserializer: D) -> Result where D: Deserializer { +impl<'de> Deserialize<'de> for EventType { + fn deserialize(deserializer: D) -> Result where D: Deserializer<'de> { struct EventTypeVisitor; - impl Visitor for EventTypeVisitor { + impl<'de> Visitor<'de> for EventTypeVisitor { type Value = EventType; fn expecting(&self, formatter: &mut Formatter) -> FmtResult { diff --git a/src/room/message.rs b/src/room/message.rs index d365b2aa..287144a2 100644 --- a/src/room/message.rs +++ b/src/room/message.rs @@ -268,8 +268,8 @@ impl Serialize for MessageEventContent { } } -impl Deserialize for MessageEventContent { - fn deserialize(deserializer: D) -> Result where D: Deserializer { +impl<'de> Deserialize<'de> for MessageEventContent { + fn deserialize(deserializer: D) -> Result where D: Deserializer<'de> { let value: Value = try!(Deserialize::deserialize(deserializer)); let message_type_value = match value.get("msgtype") { diff --git a/src/stripped.rs b/src/stripped.rs index 4595fc82..cd45db53 100644 --- a/src/stripped.rs +++ b/src/stripped.rs @@ -65,8 +65,9 @@ pub enum StrippedState { /// A "stripped-down" version of a core state event. #[derive(Clone, Debug, Deserialize, Serialize)] -pub struct StrippedStateContent where C: Deserialize + Serialize { +pub struct StrippedStateContent where C: for<'a> Deserialize<'a> + Serialize { /// Data specific to the event type. + #[serde(bound(deserialize = ""))] pub content: C, /// The type of the event. #[serde(rename="type")] @@ -94,8 +95,8 @@ impl Serialize for StrippedState { } } -impl Deserialize for StrippedState { - fn deserialize(deserializer: D) -> Result where D: Deserializer { +impl<'de> Deserialize<'de> for StrippedState { + fn deserialize(deserializer: D) -> Result where D: Deserializer<'de> { let value: Value = try!(Deserialize::deserialize(deserializer)); let event_type_value = match value.get("type") {