use std::fmt;
use std::fmt::{Display, Formatter};
use std::io::Error;
use std::string::FromUtf8Error;
#[derive(Debug)]
pub enum RigCtlError {
ConnectionError(String),
AlreadyConnected,
RawDataError(String),
ResponseParsing(String),
CommunicationTimeout,
}
impl Display for RigCtlError {
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
match self {
RigCtlError::ConnectionError(message) => { write!(f, "Connection error: {}", message) }
RigCtlError::AlreadyConnected => { write!(f, "Already connected") }
RigCtlError::RawDataError(message) => { write!(f, "Raw data error: {}", message) }
RigCtlError::ResponseParsing(message) => { write!(f, "Response parsing error: {}", message) }
RigCtlError::CommunicationTimeout => { write!(f, "Communication timeout") }
}
}
}
impl From<Error> for RigCtlError {
fn from(value: Error) -> Self {
RigCtlError::ConnectionError(value.to_string())
}
}
impl From<FromUtf8Error> for RigCtlError {
fn from(value: FromUtf8Error) -> Self {
RigCtlError::RawDataError(value.to_string())
}
}