1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//! Defines [`Message`] trait, which defines data that is to be sent over
//! Topics.

use serde::{de::DeserializeOwned, Serialize};

/// Trait to ensure Messages can be (de)serialized
pub trait Message: Serialize + DeserializeOwned {}

impl Message for () {}
impl Message for String {}

impl Message for i8 {}
impl Message for i16 {}
impl Message for i32 {}
impl Message for i64 {}

impl Message for u8 {}
impl Message for u16 {}
impl Message for u32 {}
impl Message for u64 {}

impl<T: Message> Message for Vec<T> {}