Skip to main content

solaredge_modbus/
error.rs

1use 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}