From f01b722ae2ec6f363134128e903a2620bb292214 Mon Sep 17 00:00:00 2001 From: Jimmy Cuadra Date: Thu, 26 Jan 2017 01:23:38 -0800 Subject: [PATCH] Update serde to 0.9. --- Cargo.toml | 10 +++++----- src/collections/all.rs | 29 +++++++++++++++-------------- src/collections/only.rs | 15 ++++++++------- src/lib.rs | 18 +++++++++++------- src/room/message.rs | 9 +++++---- src/stripped.rs | 9 +++++---- 6 files changed, 49 insertions(+), 41 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 6a60ca6e..9b450012 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,8 +11,8 @@ repository = "https://github.com/ruma/ruma-events" version = "0.3.0" [dependencies] -ruma-identifiers = "0.6.0" -ruma-signatures = "0.1.0" -serde = "0.8.19" -serde_derive = "0.8.19" -serde_json = "0.8.4" +ruma-identifiers = "0.7.0" +ruma-signatures = "0.2.0" +serde = "0.9.1" +serde_derive = "0.9.1" +serde_json = "0.9.1" diff --git a/src/collections/all.rs b/src/collections/all.rs index 10a4b8e0..5a2235b1 100644 --- a/src/collections/all.rs +++ b/src/collections/all.rs @@ -25,7 +25,8 @@ use room::topic::TopicEvent; use tag::TagEvent; use typing::TypingEvent; -use serde::{Deserialize, Deserializer, Error as SerdeError, Serialize, Serializer}; +use serde::{Deserialize, Deserializer, Serialize, Serializer}; +use serde::de::Error; use serde_json::{Value, from_value}; /// A basic event, room event, or state event. @@ -160,7 +161,7 @@ pub enum StateEvent { } impl Serialize for Event { - fn serialize(&self, serializer: &mut S) -> Result<(), S::Error> where S: Serializer { + fn serialize(&self, serializer: S) -> Result where S: Serializer { match *self { Event::CallAnswer(ref event) => event.serialize(serializer), Event::CallCandidates(ref event) => event.serialize(serializer), @@ -192,10 +193,10 @@ impl Serialize for Event { } impl Deserialize for Event { - fn deserialize(deserializer: &mut D) -> Result where D: Deserializer { + fn deserialize(deserializer: D) -> Result where D: Deserializer { let value: Value = try!(Deserialize::deserialize(deserializer)); - let event_type_value = match value.find("type") { + let event_type_value = match value.get("type") { Some(value) => value.clone(), None => return Err(D::Error::missing_field("type")), }; @@ -383,15 +384,15 @@ impl Deserialize for Event { Ok(Event::Typing(event)) } EventType::Custom(_) => { - if value.find("state_key").is_some() { + if value.get("state_key").is_some() { let event = match from_value::(value) { Ok(event) => event, Err(error) => return Err(D::Error::custom(error.to_string())), }; Ok(Event::CustomState(event)) - } else if value.find("event_id").is_some() && value.find("room_id").is_some() && - value.find("sender").is_some() { + } else if value.get("event_id").is_some() && value.get("room_id").is_some() && + value.get("sender").is_some() { let event = match from_value::(value) { Ok(event) => event, Err(error) => return Err(D::Error::custom(error.to_string())), @@ -412,7 +413,7 @@ impl Deserialize for Event { } impl Serialize for RoomEvent { - fn serialize(&self, serializer: &mut S) -> Result<(), S::Error> where S: Serializer { + fn serialize(&self, serializer: S) -> Result where S: Serializer { match *self { RoomEvent::CallAnswer(ref event) => event.serialize(serializer), RoomEvent::CallCandidates(ref event) => event.serialize(serializer), @@ -439,10 +440,10 @@ impl Serialize for RoomEvent { } impl Deserialize for RoomEvent { - fn deserialize(deserializer: &mut D) -> Result where D: Deserializer { + fn deserialize(deserializer: D) -> Result where D: Deserializer { let value: Value = try!(Deserialize::deserialize(deserializer)); - let event_type_value = match value.find("type") { + let event_type_value = match value.get("type") { Some(value) => value.clone(), None => return Err(D::Error::missing_field("type")), }; @@ -598,7 +599,7 @@ impl Deserialize for RoomEvent { Ok(RoomEvent::RoomTopic(event)) } EventType::Custom(_) => { - if value.find("state_key").is_some() { + if value.get("state_key").is_some() { let event = match from_value::(value) { Ok(event) => event, Err(error) => return Err(D::Error::custom(error.to_string())), @@ -622,7 +623,7 @@ impl Deserialize for RoomEvent { } impl Serialize for StateEvent { - fn serialize(&self, serializer: &mut S) -> Result<(), S::Error> where S: Serializer { + fn serialize(&self, serializer: S) -> Result where S: Serializer { match *self { StateEvent::RoomAliases(ref event) => event.serialize(serializer), StateEvent::RoomAvatar(ref event) => event.serialize(serializer), @@ -642,10 +643,10 @@ impl Serialize for StateEvent { } impl Deserialize for StateEvent { - fn deserialize(deserializer: &mut D) -> Result where D: Deserializer { + fn deserialize(deserializer: D) -> Result where D: Deserializer { let value: Value = try!(Deserialize::deserialize(deserializer)); - let event_type_value = match value.find("type") { + let event_type_value = match value.get("type") { Some(value) => value.clone(), None => return Err(D::Error::missing_field("type")), }; diff --git a/src/collections/only.rs b/src/collections/only.rs index ce330df2..be4bfe37 100644 --- a/src/collections/only.rs +++ b/src/collections/only.rs @@ -13,7 +13,8 @@ use room::redaction::RedactionEvent; use tag::TagEvent; use typing::TypingEvent; -use serde::{Deserialize, Deserializer, Error as SerdeError, Serialize, Serializer}; +use serde::{Deserialize, Deserializer, Serialize, Serializer}; +use serde::de::Error; use serde_json::{Value, from_value}; pub use super::all::StateEvent; @@ -53,7 +54,7 @@ pub enum RoomEvent { } impl Serialize for Event { - fn serialize(&self, serializer: &mut S) -> Result<(), S::Error> where S: Serializer { + fn serialize(&self, serializer: S) -> Result where S: Serializer { match *self { Event::Presence(ref event) => event.serialize(serializer), Event::Receipt(ref event) => event.serialize(serializer), @@ -65,10 +66,10 @@ impl Serialize for Event { } impl Deserialize for Event { - fn deserialize(deserializer: &mut D) -> Result where D: Deserializer { + fn deserialize(deserializer: D) -> Result where D: Deserializer { let value: Value = try!(Deserialize::deserialize(deserializer)); - let event_type_value = match value.find("type") { + let event_type_value = match value.get("type") { Some(value) => value.clone(), None => return Err(D::Error::missing_field("type")), }; @@ -132,7 +133,7 @@ impl Deserialize for Event { } impl Serialize for RoomEvent { - fn serialize(&self, serializer: &mut S) -> Result<(), S::Error> where S: Serializer { + fn serialize(&self, serializer: S) -> Result where S: Serializer { match *self { RoomEvent::CallAnswer(ref event) => event.serialize(serializer), RoomEvent::CallCandidates(ref event) => event.serialize(serializer), @@ -146,10 +147,10 @@ impl Serialize for RoomEvent { } impl Deserialize for RoomEvent { - fn deserialize(deserializer: &mut D) -> Result where D: Deserializer { + fn deserialize(deserializer: D) -> Result where D: Deserializer { let value: Value = try!(Deserialize::deserialize(deserializer)); - let event_type_value = match value.find("type") { + let event_type_value = match value.get("type") { Some(value) => value.clone(), None => return Err(D::Error::missing_field("type")), }; diff --git a/src/lib.rs b/src/lib.rs index 6e44d764..4d2563d7 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -95,7 +95,7 @@ //! However, the `ruma_events::collections::only::Event` enum does *not* include *m.room.message*, //! because *m.room.message* implements a *more specific* event trait than `Event`. -#![feature(proc_macro)] +#![deny(missing_debug_implementations)] #![deny(missing_docs)] extern crate ruma_identifiers; @@ -104,11 +104,11 @@ extern crate serde; #[macro_use] extern crate serde_derive; extern crate serde_json; -use std::fmt::{Debug, Display, Formatter, Error as FmtError}; +use std::fmt::{Debug, Display, Formatter, Error as FmtError, Result as FmtResult}; use ruma_identifiers::{EventId, RoomId, UserId}; -use serde::{Deserialize, Deserializer, Error as SerdeError, Serialize, Serializer}; -use serde::de::Visitor; +use serde::{Deserialize, Deserializer, Serialize, Serializer}; +use serde::de::{Error as SerdeError, Visitor}; use serde_json::Value; #[macro_use] mod macros; @@ -301,19 +301,23 @@ impl<'a> From<&'a str> for EventType { } impl Serialize for EventType { - fn serialize(&self, serializer: &mut S) -> Result<(), S::Error> where S: Serializer { + fn serialize(&self, serializer: S) -> Result where S: Serializer { serializer.serialize_str(&self.to_string()) } } impl Deserialize for EventType { - fn deserialize(deserializer: &mut D) -> Result where D: Deserializer { + fn deserialize(deserializer: D) -> Result where D: Deserializer { struct EventTypeVisitor; impl Visitor for EventTypeVisitor { type Value = EventType; - fn visit_str(&mut self, v: &str) -> Result where E: SerdeError { + fn expecting(&self, formatter: &mut Formatter) -> FmtResult { + write!(formatter, "a Matrix event type as a string") + } + + fn visit_str(self, v: &str) -> Result where E: SerdeError { Ok(EventType::from(v)) } } diff --git a/src/room/message.rs b/src/room/message.rs index 3fd8d0c2..d365b2aa 100644 --- a/src/room/message.rs +++ b/src/room/message.rs @@ -1,6 +1,7 @@ //! Types for the *m.room.message* event. -use serde::{Deserialize, Deserializer, Error as SerdeError, Serialize, Serializer}; +use serde::{Deserialize, Deserializer, Serialize, Serializer}; +use serde::de::Error; use serde_json::{Value, from_value}; use super::ImageInfo; @@ -253,7 +254,7 @@ impl_enum! { } impl Serialize for MessageEventContent { - fn serialize(&self, serializer: &mut S) -> Result<(), S::Error> where S: Serializer { + fn serialize(&self, serializer: S) -> Result where S: Serializer { match *self { MessageEventContent::Audio(ref content) => content.serialize(serializer), MessageEventContent::Emote(ref content) => content.serialize(serializer), @@ -268,10 +269,10 @@ impl Serialize for MessageEventContent { } impl Deserialize for MessageEventContent { - fn deserialize(deserializer: &mut D) -> Result where D: Deserializer { + fn deserialize(deserializer: D) -> Result where D: Deserializer { let value: Value = try!(Deserialize::deserialize(deserializer)); - let message_type_value = match value.find("msgtype") { + let message_type_value = match value.get("msgtype") { Some(value) => value.clone(), None => return Err(D::Error::missing_field("msgtype")), }; diff --git a/src/stripped.rs b/src/stripped.rs index 58c6ec45..4595fc82 100644 --- a/src/stripped.rs +++ b/src/stripped.rs @@ -5,7 +5,8 @@ //! state event to be created, when the other fields can be inferred from a larger context, or where //! the other fields are otherwise inapplicable. -use serde::{Deserialize, Deserializer, Error as SerdeError, Serialize, Serializer}; +use serde::{Deserialize, Deserializer, Serialize, Serializer}; +use serde::de::Error; use serde_json::{Value, from_value}; use EventType; @@ -75,7 +76,7 @@ pub struct StrippedStateContent where C: Deserialize + Serialize { } impl Serialize for StrippedState { - fn serialize(&self, serializer: &mut S) -> Result<(), S::Error> where S: Serializer { + fn serialize(&self, serializer: S) -> Result where S: Serializer { match *self { StrippedState::RoomAliases(ref event) => event.serialize(serializer), StrippedState::RoomAvatar(ref event) => event.serialize(serializer), @@ -94,10 +95,10 @@ impl Serialize for StrippedState { } impl Deserialize for StrippedState { - fn deserialize(deserializer: &mut D) -> Result where D: Deserializer { + fn deserialize(deserializer: D) -> Result where D: Deserializer { let value: Value = try!(Deserialize::deserialize(deserializer)); - let event_type_value = match value.find("type") { + let event_type_value = match value.get("type") { Some(value) => value.clone(), None => return Err(D::Error::missing_field("type")), };