use thiserror::Error;
#[derive(Debug, Error)]
#[non_exhaustive]
pub enum Error {
#[error("channel index {index} out of range (layout has {layout} channels)")]
ChannelOutOfRange {
index: usize,
layout: usize,
},
#[error("meter has been finished, no more samples accepted")]
Finished,
#[error("expected {expected} channels, got {got}")]
ChannelMismatch {
expected: usize,
got: usize,
},
#[error("sample rate must be greater than 0, got {got} Hz")]
InvalidSampleRate {
got: u32,
},
#[error("non-finite sample at index {index} (channel {channel}): {value}")]
NonFiniteSample {
index: usize,
channel: usize,
value: f64,
},
}
pub type Result<T> = core::result::Result<T, Error>;