From 6fb069f0c9e3d41a690608b2890be54d2ddc1e69 Mon Sep 17 00:00:00 2001 From: Trevor Spiteri Date: Fri, 2 Aug 2019 16:26:08 +0200 Subject: [PATCH] implement LossyFrom for floats --- src/convert.rs | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/src/convert.rs b/src/convert.rs index d5f8231..30f7162 100644 --- a/src/convert.rs +++ b/src/convert.rs @@ -562,6 +562,68 @@ int_to_float_lossy! { u64 } int_to_float_lossy! { u128 } int_to_float_lossy! { usize } +#[cfg(feature = "f16")] +impl LossyFrom for f16 { + #[inline] + fn lossy_from(src: f16) -> f16 { + src + } +} +#[cfg(feature = "f16")] +impl LossyFrom for f32 { + #[inline] + fn lossy_from(src: f16) -> f32 { + f32::from(src) + } +} +#[cfg(feature = "f16")] +impl LossyFrom for f64 { + #[inline] + fn lossy_from(src: f16) -> f64 { + f64::from(src) + } +} + +#[cfg(feature = "f16")] +impl LossyFrom for f16 { + #[inline] + fn lossy_from(src: f32) -> f16 { + f16::from_f32(src) + } +} +impl LossyFrom for f32 { + #[inline] + fn lossy_from(src: f32) -> f32 { + src + } +} +impl LossyFrom for f64 { + #[inline] + fn lossy_from(src: f32) -> f64 { + f64::from(src) + } +} + +#[cfg(feature = "f16")] +impl LossyFrom for f16 { + #[inline] + fn lossy_from(src: f64) -> f16 { + f16::from_f64(src) + } +} +impl LossyFrom for f32 { + #[inline] + fn lossy_from(src: f64) -> f32 { + src as f32 + } +} +impl LossyFrom for f64 { + #[inline] + fn lossy_from(src: f64) -> f64 { + src + } +} + #[cfg_attr(feature = "cargo-clippy", allow(clippy::float_cmp))] #[cfg(test)] mod tests {