Skip to content

Commit d7768e7

Browse files
authored
Support the same conversions from integer types as f64 and f32. (#135)
The standard `f64` and `f32` types support conversion from integer types for which the conversion will not lose precision, as well as from `bool`. This commit adds that same support to `OrderedFloat`.
1 parent e57fd99 commit d7768e7

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

src/lib.rs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,38 @@ impl<T: Float> From<T> for OrderedFloat<T> {
214214
}
215215
}
216216

217+
impl From<bool> for OrderedFloat<f32> {
218+
fn from(val: bool) -> Self {
219+
OrderedFloat(val as u8 as f32)
220+
}
221+
}
222+
223+
impl From<bool> for OrderedFloat<f64> {
224+
fn from(val: bool) -> Self {
225+
OrderedFloat(val as u8 as f64)
226+
}
227+
}
228+
229+
macro_rules! impl_ordered_float_from {
230+
($dst:ty, $src:ty) => {
231+
impl From<$src> for OrderedFloat<$dst> {
232+
fn from(val: $src) -> Self {
233+
OrderedFloat(val.into())
234+
}
235+
}
236+
};
237+
}
238+
impl_ordered_float_from! {f64, i8}
239+
impl_ordered_float_from! {f64, i16}
240+
impl_ordered_float_from! {f64, i32}
241+
impl_ordered_float_from! {f64, u8}
242+
impl_ordered_float_from! {f64, u16}
243+
impl_ordered_float_from! {f64, u32}
244+
impl_ordered_float_from! {f32, i8}
245+
impl_ordered_float_from! {f32, i16}
246+
impl_ordered_float_from! {f32, u8}
247+
impl_ordered_float_from! {f32, u16}
248+
217249
impl<T: Float> Deref for OrderedFloat<T> {
218250
type Target = T;
219251

0 commit comments

Comments
 (0)