rok::core::num::niche
rok::core::num::niche - wrappers that leave out values (stdlib spec
2.2): NonZero<T> (0), NonNan<F> (NaN), Finite<F> (NaN, ±∞),
Positive<T> (negatives; refs-lang 2.7.6). Each is a #[niche(..)]
newtype, so NonZero<i32> | none is 4 bytes and NonNan<f64> | none
8 (refs-lang 2.7.4). new checks; new_unchecked is unsafe: a
left-out value in one reads as none once it is in a sum.
Structs
ZeroError
pub struct ZeroErrorWhat NonZero::try_from(0) throws (2.2.8).
Trait implementations 3
impl Display for ZeroErrorimpl Debug for ZeroErrorimpl Error for ZeroError
NonZero
pub struct NonZero<T>(T)A T that is never 0 (2.2.2).
pub const fn new(value: T) -> NonZero<T> | nonepub const unsafe fn new_unchecked(value: T) -> NonZero<T>valuemust not be 0.pub const fn get(self) -> T
Trait implementations 14
impl<T: NicheInt> Clone for NonZero<T>impl<T: NicheInt> Copy for NonZero<T>impl<T: NicheInt> PartialEq for NonZero<T>impl<T: NicheInt> Eq for NonZero<T>impl<T: NicheInt> PartialOrd for NonZero<T>impl<T: NicheInt> Ord for NonZero<T>impl<T: NicheInt> Hash for NonZero<T>impl<T: NicheInt> Display for NonZero<T>impl<T: NicheInt> Debug for NonZero<T>impl<T: NicheInt> Mul for NonZero<T>impl<T: NicheInt> Add for NonZero<T>impl<T: NicheInt> Sub for NonZero<T>impl<T: NicheInt> Div for NonZero<T>impl<T: NicheInt> TryFrom<T> for NonZero<T>
Positive
pub struct Positive<T>(T)A T that is never negative (refs-lang 2.7.6). Positive<u*> has no
negatives, so it has no niche either.
pub const fn new(value: T) -> Positive<T> | nonepub unsafe fn new_unchecked(value: T) -> Positive<T>valuemust not be negative.pub const fn get(self) -> T
Trait implementations 9
impl<T: NicheInt> Clone for Positive<T>impl<T: NicheInt> Copy for Positive<T>impl<T: NicheInt> PartialEq for Positive<T>impl<T: NicheInt> Eq for Positive<T>impl<T: NicheInt> PartialOrd for Positive<T>impl<T: NicheInt> Ord for Positive<T>impl<T: NicheInt> Hash for Positive<T>impl<T: NicheInt> Display for Positive<T>impl<T: NicheInt> Debug for Positive<T>
NonNan
pub struct NonNan<F>(F)An F that is never NaN (2.2.3): totally ordered, so Eq / Ord /
Hash (-0.0 == 0.0, and they hash alike).
pub const fn new(value: F) -> NonNan<F> | nonepub unsafe fn new_unchecked(value: F) -> NonNan<F>valuemust not be NaN.pub fn get(self) -> F
Trait implementations 14
impl<F: NicheFloat> Clone for NonNan<F>impl<F: NicheFloat> Copy for NonNan<F>impl<F: NicheFloat> PartialEq for NonNan<F>impl<F: NicheFloat> Eq for NonNan<F>impl<F: NicheFloat> PartialOrd for NonNan<F>impl<F: NicheFloat> Ord for NonNan<F>impl<F: NicheFloat> Hash for NonNan<F>impl<F: NicheFloat> Display for NonNan<F>impl<F: NicheFloat> Debug for NonNan<F>impl<F: NicheFloat> Add for NonNan<F>impl<F: NicheFloat> Sub for NonNan<F>impl<F: NicheFloat> Mul for NonNan<F>impl<F: NicheFloat> Div for NonNan<F>impl<F: NicheFloat> TryFrom<F> for NonNan<F>
Finite
pub struct Finite<F>(F)An F that is neither NaN nor ±∞ (2.2.4).
pub const fn new(value: F) -> Finite<F> | nonepub unsafe fn new_unchecked(value: F) -> Finite<F>valuemust be finite.pub fn get(self) -> F
Trait implementations 13
impl<F: NicheFloat> Clone for Finite<F>impl<F: NicheFloat> Copy for Finite<F>impl<F: NicheFloat> PartialEq for Finite<F>impl<F: NicheFloat> Eq for Finite<F>impl<F: NicheFloat> PartialOrd for Finite<F>impl<F: NicheFloat> Ord for Finite<F>impl<F: NicheFloat> Hash for Finite<F>impl<F: NicheFloat> Display for Finite<F>impl<F: NicheFloat> Debug for Finite<F>impl<F: NicheFloat> Add for Finite<F>impl<F: NicheFloat> Sub for Finite<F>impl<F: NicheFloat> Mul for Finite<F>impl<F: NicheFloat> TryFrom<F> for Finite<F>
Traits
NicheInt
pub trait NicheInt: Zero + Copy + Ord + Hash + Display + Debug + Add<Output = Self> + Sub<Output = Self> + Mul<Output = Self> + Div<Output = Self>The integer types NonZero / Positive wrap.
NicheFloat
pub trait NicheFloat: Copy + PartialOrd + Display + Debug + Add<Output = Self> + Sub<Output = Self> + Mul<Output = Self> + Div<Output = Self>The float types NonNan / Finite wrap.
fn niche_nan(self) -> boolfn niche_finite(self) -> boolfn key(self) -> u64The bits, widened, with
-0.0as0.0(Hash).