#[derive(Debug, PartialEq)] pub enum DhcpError { InvalidMacAddress(String), InvalidIpAddress(String), IpAddressAlreadyMapped(String), MacAddressAlreadyMapped(String), IpAddressOutOfRange(String), Configuration(String), } impl std::fmt::Display for DhcpError { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { DhcpError::InvalidMacAddress(mac) => write!(f, "Invalid MAC address format: {}", mac), DhcpError::InvalidIpAddress(ip) => write!(f, "Invalid IP address format: {}", ip), DhcpError::IpAddressAlreadyMapped(ip) => { write!(f, "IP address {} is already mapped", ip) } DhcpError::MacAddressAlreadyMapped(mac) => { write!(f, "MAC address {} is already mapped", mac) } DhcpError::IpAddressOutOfRange(ip) => { write!(f, "IP address {} is out of interface range", ip) } DhcpError::Configuration(msg) => f.write_str(&msg), } } } impl std::error::Error for DhcpError {}