use core::result;
use std::collections::TryReserveError;
pub type DeqMapResult<N> = result::Result<N, DeqMapError>;
#[non_exhaustive]
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum DeqMapError {
IndexOutOfBounds,
KeyAlreadyExists,
TryReserve(TryReserveError),
String(String),
}
impl DeqMapError {
pub fn new(err: impl ToString) -> Self {
Self::String(err.to_string())
}
}
mod std_impls {
use super::{DeqMapError, TryReserveError};
use std::fmt::Debug;
use std::{error::Error as StdError, fmt};
impl StdError for DeqMapError {}
impl fmt::Display for DeqMapError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
DeqMapError::IndexOutOfBounds => write!(f, "Index is out of bounds."),
DeqMapError::KeyAlreadyExists => write!(f, "The key already exists."),
DeqMapError::String(e) => Debug::fmt(e, f),
#[allow(unreachable_patterns)]
_ => write!(f, "Error"),
}
}
}
impl From<&str> for DeqMapError {
fn from(err: &str) -> Self {
DeqMapError::new(err)
}
}
impl From<String> for DeqMapError {
fn from(err: String) -> Self {
DeqMapError::String(err)
}
}
impl From<TryReserveError> for DeqMapError {
fn from(err: TryReserveError) -> Self {
DeqMapError::TryReserve(err)
}
}
}