rosa 0.1.0

Audio feature extraction library matching librosa output
Documentation
use std::fmt;

/// Errors from audio I/O operations.
#[derive(Debug)]
pub enum AudioError {
    /// Failed to decode audio.
    Decode(symphonia::core::errors::Error),
    /// No audio track found in the file.
    NoTrack,
    /// File I/O error.
    Io(std::io::Error),
    /// Resampling failed.
    Resample(String),
}

impl fmt::Display for AudioError {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        match self {
            AudioError::Decode(e) => write!(f, "decode error: {e}"),
            AudioError::NoTrack => write!(f, "no audio track found"),
            AudioError::Io(e) => write!(f, "I/O error: {e}"),
            AudioError::Resample(e) => write!(f, "resample error: {e}"),
        }
    }
}

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

impl From<symphonia::core::errors::Error> for AudioError {
    fn from(e: symphonia::core::errors::Error) -> Self {
        AudioError::Decode(e)
    }
}

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