//! Common features shared between requests and responses //! use serde_json::Value; use std::collections::VecDeque; /// Serialize and Deserialize a message type /// /// All messages inner types must implement this trait pub trait SerializeDeserialize { /// The tag to identity the message by fn get_tag() -> &'static str; /// How to serialize into JSON. It must return a vector of serde_json::Value fn serialize(&self) -> Result, String>; /// How to deserialize, the first element (the tag) is already removed /// before passing to this method fn deserialize(array: VecDeque) -> Result where Self: Sized; }