use std::{error::Error, fmt};
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct UnknownEncodingError {
label: String,
}
impl UnknownEncodingError {
pub fn new(label: impl Into<String>) -> Self {
Self {
label: label.into(),
}
}
}
impl fmt::Display for UnknownEncodingError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "unknown encoding: {}", self.label)
}
}
impl Error for UnknownEncodingError {}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct EncodingConversionError {
encoding: String,
operation: &'static str,
}
impl EncodingConversionError {
pub(crate) fn new(encoding: impl Into<String>, operation: &'static str) -> Self {
Self {
encoding: encoding.into(),
operation,
}
}
}
impl fmt::Display for EncodingConversionError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(
f,
"failed to {} with encoding {}",
self.operation, self.encoding
)
}
}
impl Error for EncodingConversionError {}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct NativeEncodingError {
message: String,
}
impl NativeEncodingError {
pub(crate) fn new(message: impl Into<String>) -> Self {
Self {
message: message.into(),
}
}
}
impl fmt::Display for NativeEncodingError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str(&self.message)
}
}
impl Error for NativeEncodingError {}