use std::fmt::{Display, Formatter};
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
pub enum SingleValueBinInterval<T> {
Overflow,
Bin {
value: T,
},
}
impl<T> SingleValueBinInterval<T> {
pub fn new(value: T) -> Self {
Self::Bin { value }
}
pub fn overflow() -> Self {
Self::Overflow {}
}
pub fn value(&self) -> Option<&T> {
match self {
Self::Overflow => None,
Self::Bin { value } => Some(value),
}
}
}
impl<T: Display> Display for SingleValueBinInterval<T> {
fn fmt(&self, f: &mut Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
match self {
Self::Overflow => write!(f, "{{overflow}}"),
Self::Bin { value } => write!(f, "{{{value}}}"),
}
}
}