use std::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct MaxIterations(u16);
impl MaxIterations {
pub const DEFAULT: Self = Self(30);
pub fn new(value: u16) -> Self {
if value == 0 {
Self::DEFAULT
} else {
Self(value)
}
}
pub fn try_from_usize(value: usize) -> Option<Self> {
if value == 0 {
None
} else {
Some(Self(value.min(u16::MAX as usize) as u16))
}
}
pub fn as_u16(self) -> u16 {
self.0
}
}
impl fmt::Display for MaxIterations {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}", self.0)
}
}