modbus_mqtt/
error.rs

1use thiserror::Error;
2
3#[derive(Error, Debug)]
4#[non_exhaustive]
5pub enum Error {
6    #[error(transparent)]
7    IOError(#[from] std::io::Error),
8
9    #[error(transparent)]
10    MQTTOptionError(#[from] rumqttc::OptionError),
11
12    #[error(transparent)]
13    MQTTClientError(#[from] rumqttc::ClientError),
14
15    #[error(transparent)]
16    MQTTConnectionError(#[from] rumqttc::ConnectionError),
17
18    #[error(transparent)]
19    InvalidSocketAddr(#[from] std::net::AddrParseError),
20
21    #[error(transparent)]
22    SerialError(#[from] tokio_serial::Error),
23
24    #[error(transparent)]
25    ParseIntError(#[from] std::num::ParseIntError),
26
27    #[error(transparent)]
28    JSONError(#[from] serde_json::Error),
29
30    #[error("RecvError")]
31    RecvError,
32
33    #[error("SendError")]
34    SendError,
35
36    #[error("Unrecognised modbus protocol")]
37    UnrecognisedModbusProtocol,
38
39    #[error("{0}")]
40    Other(std::borrow::Cow<'static, str>),
41
42    #[error("Unknown")]
43    Unknown,
44}
45
46impl From<String> for Error {
47    fn from(s: String) -> Self {
48        Self::Other(s.into())
49    }
50}
51impl From<&'static str> for Error {
52    fn from(s: &'static str) -> Self {
53        Self::Other(s.into())
54    }
55}