Skip to content

Commit 9aa400f

Browse files
authored
Merge pull request #59 from cbiffle/no-std
In no_std context, use no_std num-traits.
2 parents 5850e60 + 06bc834 commit 9aa400f

File tree

4 files changed

+22
-7
lines changed

4 files changed

+22
-7
lines changed

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ keywords = ["no_std", "ord", "f64", "f32", "sort"]
1010
categories = ["science", "rust-patterns", "no-std"]
1111

1212
[dependencies]
13-
num-traits = "0.2"
13+
num-traits = { version = "0.2.1", default-features = false }
1414
serde = { version = "1.0", optional = true, default-features = false }
1515

1616
[dev-dependencies]
1717
serde_test = "1.0"
1818

1919
[features]
2020
default = ["std"]
21-
std = []
21+
std = ["num-traits/std"]

src/lib.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,11 @@ use core::mem;
1616
use core::hint::unreachable_unchecked;
1717
use core::str::FromStr;
1818

19-
use num_traits::{Bounded, Float, FromPrimitive, Num, NumCast, One, Signed, ToPrimitive,
20-
Zero};
19+
use num_traits::{Bounded, FromPrimitive, Num, NumCast, One, Signed, ToPrimitive, Zero};
20+
#[cfg(feature = "std")]
21+
use num_traits::Float;
22+
#[cfg(not(feature = "std"))]
23+
use num_traits::float::FloatCore as Float;
2124

2225
/// A wrapper around Floats providing an implementation of Ord and Hash.
2326
///
@@ -615,7 +618,7 @@ impl<T: Float + Signed> Signed for NotNan<T> {
615618
fn abs(&self) -> Self { NotNan(self.0.abs()) }
616619

617620
fn abs_sub(&self, other: &Self) -> Self {
618-
NotNan::new(self.0.abs_sub(other.0)).expect("Subtraction resulted in NaN")
621+
NotNan::new(Signed::abs_sub(&self.0, &other.0)).expect("Subtraction resulted in NaN")
619622
}
620623

621624
fn signum(&self) -> Self { NotNan(self.0.signum()) }
@@ -635,7 +638,10 @@ mod impl_serde {
635638
use self::serde::{Serialize, Serializer, Deserialize, Deserializer};
636639
use self::serde::de::{Error, Unexpected};
637640
use super::{OrderedFloat, NotNan};
641+
#[cfg(feature = "std")]
638642
use num_traits::Float;
643+
#[cfg(not(feature = "std"))]
644+
use num_traits::float::FloatCore as Float;
639645
use core::f64;
640646

641647
#[cfg(test)]

tests/test.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@ extern crate num_traits;
22
extern crate ordered_float;
33

44
pub use ordered_float::*;
5-
pub use num_traits::{Bounded, Float, FromPrimitive, Num, One, Signed, ToPrimitive, Zero};
5+
pub use num_traits::{Bounded, FromPrimitive, Num, One, Signed, ToPrimitive, Zero};
6+
#[cfg(feature = "std")]
7+
pub use num_traits::Float;
8+
#[cfg(not(feature = "std"))]
9+
pub use num_traits::float::FloatCore as Float;
10+
611
pub use std::cmp::Ordering::*;
712
pub use std::{f32, f64, panic};
813

tests/test_deprecated_names.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@ extern crate num_traits;
44
extern crate ordered_float;
55

66
pub use ordered_float::*;
7-
pub use num_traits::{Bounded, Float, FromPrimitive, Num, One, Signed, ToPrimitive, Zero};
7+
pub use num_traits::{Bounded, FromPrimitive, Num, One, Signed, ToPrimitive, Zero};
8+
#[cfg(feature = "std")]
9+
pub use num_traits::Float;
10+
#[cfg(not(feature = "std"))]
11+
pub use num_traits::float::FloatCore as Float;
812
pub use std::cmp::Ordering::*;
913
pub use std::{f32, f64, panic};
1014

0 commit comments

Comments
 (0)