#[derive(Debug, thiserror::Error)]
#[non_exhaustive]
pub enum EncodeError {
#[error("io error: {0}")]
Io(#[from] std::io::Error),
#[error("unsupported: {0}")]
Unsupported(String),
#[error("encoder error: {0}")]
Encoder(String),
}
pub type Result<T> = std::result::Result<T, EncodeError>;
impl EncodeError {
pub fn audio_error(&self) -> flexaudio_core::Error {
use flexaudio_core::{AddonErrorKind as Kind, Error};
let kind = match self {
Self::Io(_) => Kind::FlacIo,
Self::Unsupported(_) => Kind::FlacUnsupported,
Self::Encoder(_) => Kind::FlacEncoder,
};
Error::Addon {
kind,
message: self.to_string(),
}
}
}