1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
extern crate tokio; use std::error::Error as StdError; use std::fmt; #[derive(Debug)] pub enum Error { NotRunning, MPSCRecv, MPSCTrySend, OneShotRecv, OneShotSend, } impl StdError for Error { fn description(&self) -> &str { match self { Error::NotRunning => "run() must be called first", Error::MPSCRecv => "mpsc recieve failed", Error::MPSCTrySend => "mpsc `try_send()` failed", Error::OneShotRecv => "oneshot receive failed", Error::OneShotSend => "oneshot `send()` failed", } } } impl fmt::Display for Error { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "{}", self.description()) } } impl From<tokio::sync::mpsc::error::UnboundedRecvError> for Error { fn from(_: tokio::sync::mpsc::error::UnboundedRecvError) -> Self { Error::MPSCRecv } } impl<T> From<tokio::sync::mpsc::error::UnboundedTrySendError<T>> for Error { fn from(_: tokio::sync::mpsc::error::UnboundedTrySendError<T>) -> Self { Error::MPSCTrySend } } impl From<tokio::sync::oneshot::error::RecvError> for Error { fn from(_: tokio::sync::oneshot::error::RecvError) -> Self { Error::OneShotRecv } }