#[non_exhaustive]pub enum Error {
InvalidArgument(&'static str),
#[non_exhaustive] BufferTooSmall {
needed: usize,
provided: usize,
},
InvalidPacket(&'static str),
InvalidStream(&'static str),
Io(Error),
Internal(&'static str),
}Expand description
Anything that can go wrong encoding, decoding, or parsing an Opus stream.
The enum is #[non_exhaustive], so match with a _ arm: new variants are
not a breaking change. The individual variants are not, deliberately —
marking a tuple variant #[non_exhaustive] stops callers destructuring it
at all, which would take away the message rather than protect it.
BufferTooSmall is the exception, because a struct
variant can be marked and still be matched with ...
Variants are grouped by who is at fault: Error::InvalidArgument and
Error::BufferTooSmall mean the caller passed something the codec cannot
honour, Error::InvalidPacket means the bitstream is malformed, and
Error::Internal means a codec stage failed in a way that is not
attributable to either.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
InvalidArgument(&'static str)
A configuration value is outside the range Opus allows — an unsupported sample rate or channel count, a frame size no coding mode can carry, or a mapping family that does not accept the requested layout.
#[non_exhaustive]BufferTooSmall
The caller’s output slice cannot hold the result. Both sizes are in the
unit of the call: bytes for encode, samples-per-channel for decode.
Fields
This variant is marked as non-exhaustive
InvalidPacket(&'static str)
The packet does not decode as Opus: a truncated or self-inconsistent frame-length field, an impossible frame count, padding that runs off the end, or a total duration above the 120 ms an Opus packet may carry.
InvalidStream(&'static str)
The Ogg container is malformed: a missing capture pattern, an unsupported
page version, a CRC mismatch, or an OpusHead/OpusTags packet that does
not match RFC 7845.
Io(Error)
The underlying reader or writer failed.
Internal(&'static str)
A codec stage failed. Reaching this from well-formed input is a bug in this crate; the string names the stage.
Trait Implementations§
Source§impl Error for Error
impl Error for Error
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()