use thiserror::Error;
pub type QueueResult<T> = Result<T, QueueError>;
#[derive(Error, Debug, PartialEq)]
pub enum QueueError {
#[error("Queue is full")]
QueueFull,
#[error("Queue is empty")]
QueueEmpty,
#[error("Channel disconnected")]
ChannelDisconnected,
#[error("Operation timed out")]
Timeout,
#[error("Operation not supported: {0}")]
Unsupported(String),
#[error("Send failed: {0}")]
SendFailed(String),
#[error("Receive failed: {0}")]
ReceiveFailed(String),
}