wasmrs_rx/
error.rs

1//! Library-specific error types and utility functions
2
3/// Error type for wasmRS-rx errors.
4#[allow(missing_copy_implementations)]
5#[derive(Debug, Clone)]
6pub enum Error {
7  /// Receive on a channel failed.
8  RecvFailed(u8),
9  /// The sender in a [FluxChannel] has already been removed or dropped.
10  SenderClosed,
11  /// The receiver in a [FluxChannel] has already been removed.
12  ReceiverAlreadyGone,
13  /// A Runtime-related error.
14  Runtime(String),
15  /// Error decoding a payload.
16  Decode(String),
17}
18
19impl std::error::Error for Error {}
20impl std::fmt::Display for Error {
21  fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
22    match self {
23      Error::RecvFailed(_) => f.write_str("Receive failed"),
24      Error::ReceiverAlreadyGone => f.write_str("Received already taken"),
25      Error::Decode(e) => {
26        let mut message = "Decode error: ".to_owned();
27        message.push_str(e);
28        f.write_str(e)
29      }
30      Error::Runtime(msg) => f.write_str(msg),
31      Error::SenderClosed => f.write_str("Sender closed"),
32    }
33  }
34}
35
36impl From<wasmrs_runtime::Error> for Error {
37  fn from(e: wasmrs_runtime::Error) -> Self {
38    Self::Runtime(e.to_string())
39  }
40}