solaredge-modbus 0.1.2

SolarEdge modbus client
Documentation
use std::fmt;

#[derive(Debug)]
pub enum Error {
	InvalidPhaseCountValue(u16),
	Modbus(modbus::Error),
	Io(std::io::Error),
	#[cfg(feature = "discover")]
	Mdns(mdns_sd::Error),
}

impl fmt::Display for Error {
	fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
		match self {
			Self::Modbus(e) => write!(f, "Modbus error: {e}"),
			Self::Io(e) => write!(f, "I/O error: {e}"),
			Self::InvalidPhaseCountValue(val) => write!(f, "Invalid phase count value: {val}"),
			#[cfg(feature = "discover")]
			Self::Mdns(e) => write!(f, "mDNS error: {e}"),
		}
	}
}

impl std::error::Error for Error {}

impl From<modbus::Error> for Error {
	fn from(e: modbus::Error) -> Self {
		Error::Modbus(e)
	}
}

impl From<std::io::Error> for Error {
	fn from(e: std::io::Error) -> Self {
		Error::Io(e)
	}
}

#[cfg(feature = "discover")]
impl From<mdns_sd::Error> for Error {
	fn from(e: mdns_sd::Error) -> Self {
		Error::Mdns(e)
	}
}