use std::fmt;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum CloneStreamError {
MaxClonesExceeded {
max_allowed: usize,
current_count: usize,
},
InvalidCloneId { clone_id: usize },
CloneAlreadyActive { clone_id: usize },
}
impl fmt::Display for CloneStreamError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::MaxClonesExceeded {
max_allowed,
current_count,
} => write!(
f,
"Maximum number of clones exceeded: {current_count} >= {max_allowed}"
),
Self::InvalidCloneId { clone_id } => {
write!(f, "Invalid clone ID: {clone_id}")
}
Self::CloneAlreadyActive { clone_id } => {
write!(f, "Clone {clone_id} is already active")
}
}
}
}
impl std::error::Error for CloneStreamError {}
pub type Result<T> = std::result::Result<T, CloneStreamError>;