titanrt 0.7.0

Typed reactive runtime for real-time systems
Documentation
use std::error::Error;
use std::fmt;

pub type StreamResult<T> = Result<T, StreamError>;
#[derive(Debug)]
pub enum StreamError {
    Cancelled,
    SendFull,
    SendClosed,
    Timeout,
    JoinPanic(String),
    Inner(String),
    NoActionSender,
    NoStreamReceiver,
    Unhealthy,
    WebSocket(anyhow::Error),
    Unimplemented,
    Reconnect(anyhow::Error),
    Unknown(anyhow::Error),
}

impl fmt::Display for StreamError {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        match self {
            Self::Cancelled => write!(f, "cancelled"),
            Self::SendFull => write!(f, "send failed: full"),
            Self::SendClosed => write!(f, "send failed: closed"),
            Self::Timeout => write!(f, "stop timeout"),
            Self::JoinPanic(s) => write!(f, "stream panicked: {s}"),
            Self::Inner(s) => write!(f, "stream inner error: {s}"),
            Self::NoActionSender => write!(f, "action_tx is None"),
            Self::NoStreamReceiver => write!(f, "stream_rx is None"),
            Self::Unhealthy => write!(f, "yellowstone_grpc unhealthy"),
            Self::Unimplemented => write!(f, "unimplemented"),
            Self::WebSocket(s) => write!(f, "websocket error: {s}"),
            Self::Unknown(err) => write!(f, "unknown error: {err}"),
            Self::Reconnect(err) => write!(f, "reconnect error: {err}"),
        }
    }
}

impl Error for StreamError {}

impl From<anyhow::Error> for StreamError {
    fn from(err: anyhow::Error) -> Self {
        StreamError::Unknown(err)
    }
}