macro_rules! accept_infinity {
(Negative) => {
true
};
(NegativeFinite) => {
false
};
(NonNaN) => {
true
};
(NonNaNFinite) => {
false
};
(NonZeroNonNaN) => {
true
};
(NonZeroNonNaNFinite) => {
false
};
(Positive) => {
true
};
(PositiveFinite) => {
false
};
(StrictlyNegative) => {
true
};
(StrictlyNegativeFinite) => {
false
};
(StrictlyPositive) => {
true
};
(StrictlyPositiveFinite) => {
false
};
}
macro_rules! accept_zero {
(Negative) => {
true
};
(NegativeFinite) => {
true
};
(NonNaN) => {
true
};
(NonNaNFinite) => {
true
};
(NonZeroNonNaN) => {
false
};
(NonZeroNonNaNFinite) => {
false
};
(Positive) => {
true
};
(PositiveFinite) => {
true
};
(StrictlyNegative) => {
false
};
(StrictlyNegativeFinite) => {
false
};
(StrictlyPositive) => {
false
};
(StrictlyPositiveFinite) => {
false
};
}
macro_rules! accept_negative {
(Negative) => {
true
};
(NegativeFinite) => {
true
};
(NonNaN) => {
true
};
(NonNaNFinite) => {
true
};
(NonZeroNonNaN) => {
true
};
(NonZeroNonNaNFinite) => {
true
};
(Positive) => {
false
};
(PositiveFinite) => {
false
};
(StrictlyNegative) => {
true
};
(StrictlyNegativeFinite) => {
true
};
(StrictlyPositive) => {
false
};
(StrictlyPositiveFinite) => {
false
};
}
macro_rules! accept_positive {
(Negative) => {
false
};
(NegativeFinite) => {
false
};
(NonNaN) => {
true
};
(NonNaNFinite) => {
true
};
(NonZeroNonNaN) => {
true
};
(NonZeroNonNaNFinite) => {
true
};
(Positive) => {
true
};
(PositiveFinite) => {
true
};
(StrictlyNegative) => {
false
};
(StrictlyNegativeFinite) => {
false
};
(StrictlyPositive) => {
true
};
(StrictlyPositiveFinite) => {
true
};
}
macro_rules! accept {
($type:ident) => {
impl $type {
#[must_use]
pub const fn accept_infinity() -> bool {
accept_infinity!($type)
}
#[must_use]
pub const fn accept_zero() -> bool {
accept_zero!($type)
}
#[must_use]
pub const fn accept_negative() -> bool {
accept_negative!($type)
}
#[must_use]
pub const fn accept_positive() -> bool {
accept_positive!($type)
}
}
impl $type<f32> {
#[inline]
#[must_use]
#[doc(hidden)]
pub const unsafe fn internal_only_new_unchecked(value: f32) -> Self {
Self(value)
}
}
impl $type<f64> {
#[inline]
#[must_use]
#[doc(hidden)]
pub const unsafe fn internal_only_new_unchecked(value: f64) -> Self {
Self(value)
}
}
};
}
use crate::types::{
f32, f64, Negative, NegativeFinite, NonNaN, NonNaNFinite, NonZeroNonNaN, NonZeroNonNaNFinite,
Positive, PositiveFinite, StrictlyNegative, StrictlyNegativeFinite, StrictlyPositive,
StrictlyPositiveFinite,
};
accept!(Negative);
accept!(NegativeFinite);
accept!(NonNaN);
accept!(NonNaNFinite);
accept!(NonZeroNonNaN);
accept!(NonZeroNonNaNFinite);
accept!(Positive);
accept!(PositiveFinite);
accept!(StrictlyNegative);
accept!(StrictlyNegativeFinite);
accept!(StrictlyPositive);
accept!(StrictlyPositiveFinite);