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}