titanrt 0.7.0

Typed reactive runtime for real-time systems
Documentation
use bytes::Bytes;

#[derive(Debug, Clone)]
pub enum WebSocketMessage {
    Text(String),
    Binary(Bytes),
}

impl WebSocketMessage {
    #[inline]
    pub fn text<T: Into<String>>(value: T) -> Self {
        Self::Text(value.into())
    }

    #[inline]
    pub fn binary<B: Into<Bytes>>(value: B) -> Self {
        Self::Binary(value.into())
    }

    #[inline]
    pub fn as_text(&self) -> Option<&str> {
        match self {
            WebSocketMessage::Text(text) => Some(text.as_str()),
            WebSocketMessage::Binary(_) => None,
        }
    }

    #[inline]
    pub fn as_bytes(&self) -> Option<&Bytes> {
        match self {
            WebSocketMessage::Binary(bytes) => Some(bytes),
            WebSocketMessage::Text(_) => None,
        }
    }

    #[inline]
    pub fn into_bytes(self) -> Bytes {
        match self {
            WebSocketMessage::Text(text) => Bytes::from(text.into_bytes()),
            WebSocketMessage::Binary(bytes) => bytes,
        }
    }
}