Skip to content

Commit c85dfdd

Browse files
committed
Implement AsPrimitive<NotNan> for integer types
Closes #123.
1 parent dcdabc8 commit c85dfdd

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

src/lib.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,12 @@ impl<T: NumCast> NumCast for OrderedFloat<T> {
470470
}
471471

472472
macro_rules! impl_as_primitive {
473+
(@ ($T: ty) => $(#[$cfg:meta])* impl (NotNan<$U: ty>) ) => {
474+
$(#[$cfg])*
475+
impl AsPrimitive<NotNan<$U>> for $T {
476+
#[inline] fn as_(self) -> NotNan<$U> { NotNan(self as $U) }
477+
}
478+
};
473479
(@ (OrderedFloat<$T: ty>) => $(#[$cfg:meta])* impl (OrderedFloat<$U: ty>) ) => {
474480
$(#[$cfg])*
475481
impl AsPrimitive<OrderedFloat<$U>> for OrderedFloat<$T> {
@@ -509,6 +515,17 @@ impl_as_primitive!((isize) => { (OrderedFloat<f32>), (OrderedFloat<f64>) });
509515
impl_as_primitive!((f32) => { (OrderedFloat<f32>), (OrderedFloat<f64>) });
510516
impl_as_primitive!((f64) => { (OrderedFloat<f32>), (OrderedFloat<f64>) });
511517

518+
impl_as_primitive!((u8) => { (NotNan<f32>), (NotNan<f64>) });
519+
impl_as_primitive!((i8) => { (NotNan<f32>), (NotNan<f64>) });
520+
impl_as_primitive!((u16) => { (NotNan<f32>), (NotNan<f64>) });
521+
impl_as_primitive!((i16) => { (NotNan<f32>), (NotNan<f64>) });
522+
impl_as_primitive!((u32) => { (NotNan<f32>), (NotNan<f64>) });
523+
impl_as_primitive!((i32) => { (NotNan<f32>), (NotNan<f64>) });
524+
impl_as_primitive!((u64) => { (NotNan<f32>), (NotNan<f64>) });
525+
impl_as_primitive!((i64) => { (NotNan<f32>), (NotNan<f64>) });
526+
impl_as_primitive!((usize) => { (NotNan<f32>), (NotNan<f64>) });
527+
impl_as_primitive!((isize) => { (NotNan<f32>), (NotNan<f64>) });
528+
512529
impl_as_primitive!((OrderedFloat<f32>) => { (u8), (u16), (u32), (u64), (usize), (i8), (i16), (i32), (i64), (isize), (f32), (f64) });
513530
impl_as_primitive!((OrderedFloat<f64>) => { (u8), (u16), (u32), (u64), (usize), (i8), (i16), (i32), (i64), (isize), (f32), (f64) });
514531

0 commit comments

Comments
 (0)