solaredge_modbus/
error.rs1use std::fmt;
2
3#[derive(Debug)]
4pub enum Error {
5 InvalidPhaseCountValue(u16),
6 Modbus(modbus::Error),
7 Io(std::io::Error),
8 #[cfg(feature = "discover")]
9 Mdns(mdns_sd::Error),
10}
11
12impl fmt::Display for Error {
13 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14 match self {
15 Self::Modbus(e) => write!(f, "Modbus error: {e}"),
16 Self::Io(e) => write!(f, "I/O error: {e}"),
17 Self::InvalidPhaseCountValue(val) => write!(f, "Invalid phase count value: {val}"),
18 #[cfg(feature = "discover")]
19 Self::Mdns(e) => write!(f, "mDNS error: {e}"),
20 }
21 }
22}
23
24impl std::error::Error for Error {}
25
26impl From<modbus::Error> for Error {
27 fn from(e: modbus::Error) -> Self {
28 Error::Modbus(e)
29 }
30}
31
32impl From<std::io::Error> for Error {
33 fn from(e: std::io::Error) -> Self {
34 Error::Io(e)
35 }
36}
37
38#[cfg(feature = "discover")]
39impl From<mdns_sd::Error> for Error {
40 fn from(e: mdns_sd::Error) -> Self {
41 Error::Mdns(e)
42 }
43}