pub(crate) trait TryNumFrom<T>: Sized {
fn try_num_from(_: T) -> Option<Self>;
}
impl TryNumFrom<f32> for u8 {
#[inline]
fn try_num_from(v: f32) -> Option<Self> {
i32::try_num_from(v).and_then(|v| Self::try_from(v).ok())
}
}
impl TryNumFrom<f32> for i16 {
#[inline]
fn try_num_from(v: f32) -> Option<Self> {
i32::try_num_from(v).and_then(|v| Self::try_from(v).ok())
}
}
impl TryNumFrom<f32> for u16 {
#[inline]
fn try_num_from(v: f32) -> Option<Self> {
i32::try_num_from(v).and_then(|v| Self::try_from(v).ok())
}
}
#[allow(clippy::manual_range_contains)]
impl TryNumFrom<f32> for i32 {
#[inline]
fn try_num_from(v: f32) -> Option<Self> {
const MIN: f32 = i32::MIN as f32;
const MAX_P1: f32 = i32::MAX as f32;
if v >= MIN && v < MAX_P1 {
Some(v as Self)
} else {
None
}
}
}