From a9993b128194ea16cc25ed88bbfb90c91f0fdbfb Mon Sep 17 00:00:00 2001 From: Emmanuel Gil Peyrot Date: Thu, 20 Apr 2017 00:14:47 +0100 Subject: [PATCH] Remove the MessagePayload trait, it was a bad idea. --- src/body.rs | 3 --- src/chatstates.rs | 3 --- src/lib.rs | 13 ++++++++----- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/body.rs b/src/body.rs index 43bd6914..43c6c833 100644 --- a/src/body.rs +++ b/src/body.rs @@ -1,7 +1,6 @@ use minidom::Element; use error::Error; -use super::MessagePayload; // TODO: also support components and servers. use ns::JABBER_CLIENT_NS; @@ -11,8 +10,6 @@ pub struct Body { body: String, } -impl MessagePayload for Body {} - pub fn parse_body(root: &Element) -> Result { if !root.is("body", JABBER_CLIENT_NS) { return Err(Error::ParseError("This is not a body element.")); diff --git a/src/chatstates.rs b/src/chatstates.rs index d84880c6..77db1413 100644 --- a/src/chatstates.rs +++ b/src/chatstates.rs @@ -1,7 +1,6 @@ use minidom::Element; use error::Error; -use super::MessagePayload; use ns::CHATSTATES_NS; @@ -14,8 +13,6 @@ pub enum ChatState { Paused, } -impl MessagePayload for ChatState {} - pub fn parse_chatstate(root: &Element) -> Result { for _ in root.children() { return Err(Error::ParseError("Unknown child in chatstate element.")); diff --git a/src/lib.rs b/src/lib.rs index 8914a6c6..c6f93d93 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -13,16 +13,19 @@ pub mod ping; pub mod chatstates; pub mod ibb; -use std::fmt::Debug; use minidom::Element; -pub trait MessagePayload: Debug {} +#[derive(Debug)] +pub enum MessagePayload { + Body(body::Body), + ChatState(chatstates::ChatState), +} -pub fn parse_message_payload(elem: &Element) -> Option> { +pub fn parse_message_payload(elem: &Element) -> Option { if let Ok(body) = body::parse_body(elem) { - Some(Box::new(body)) + Some(MessagePayload::Body(body)) } else if let Ok(chatstate) = chatstates::parse_chatstate(elem) { - Some(Box::new(chatstate)) + Some(MessagePayload::ChatState(chatstate)) } else { None }