use core::fmt;
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum InvalidHandle {
ForeignHeap,
Stale,
}
impl fmt::Display for InvalidHandle {
fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::ForeignHeap => formatter.write_str("handle belongs to another heap"),
Self::Stale => formatter.write_str("handle no longer identifies a live entry"),
}
}
}
impl std::error::Error for InvalidHandle {}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum DecreaseKeyError {
InvalidHandle(InvalidHandle),
NotDecreased,
InvalidKey,
}
impl fmt::Display for DecreaseKeyError {
fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::InvalidHandle(error) => error.fmt(formatter),
Self::NotDecreased => {
formatter.write_str("new key must not be greater than the old key")
}
Self::InvalidKey => formatter.write_str("new key violates the heap's key restrictions"),
}
}
}
impl std::error::Error for DecreaseKeyError {}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum IncreaseKeyError {
InvalidHandle(InvalidHandle),
NotIncreased,
}
impl fmt::Display for IncreaseKeyError {
fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::InvalidHandle(error) => error.fmt(formatter),
Self::NotIncreased => formatter.write_str("new key must not be less than the old key"),
}
}
}
impl std::error::Error for IncreaseKeyError {}