rust_wheel 0.1.12

A project to define some public component.
Documentation
use serde::{Deserialize, Serialize};
use std::fmt;

#[derive(Deserialize, Serialize, Clone)]
pub struct SSEMessage<T> where T: fmt::Display, {
    pub event: Option<String>,
    pub data: T,
    pub id: Option<String>,
    pub retry: Option<u32>,
}

impl<T: fmt::Display> From<T> for SSEMessage<T> {
    fn from(data: T) -> Self {
        Self {
            event: Some("".to_string()),
            data: data,
            id: Some("".to_string()),
            retry: None,
        }
    }
}

impl<T: fmt::Display> SSEMessage<T> {
    pub fn from_data(data: T, event_type: &String) -> Self {
        Self {
            event: Some(event_type.to_string()),
            data: data,
            id: None,
            retry: Some(5000),
        }
    }
}

impl<T: fmt::Display> fmt::Display for SSEMessage<T> {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        if let Some(event) = &self.event {
            write!(f, "event:{}\n", event)?;
        }
        write!(f, "data:{}\n", self.data)?;
        if let Some(id) = &self.id {
            write!(f, "id:{}\n", id)?;
        }
        if let Some(retry) = &self.retry {
            write!(f, "retry:{}\n", retry)?;
        }
        write!(f, "\n")
    }
}