#[repr(transparent)]pub struct OrderedFloat<T>(pub T);Expand description
A wrapper around floats providing implementations of Eq, Ord, and Hash.
NaN is sorted as greater than all other values and equal to itself, in contradiction with the IEEE standard.
use ordered_float::OrderedFloat;
use std::f32::NAN;
let mut v = [OrderedFloat(NAN), OrderedFloat(2.0), OrderedFloat(1.0)];
v.sort();
assert_eq!(v, [OrderedFloat(1.0), OrderedFloat(2.0), OrderedFloat(NAN)]);Because OrderedFloat implements Ord and Eq, it can be used as a key in a HashSet,
HashMap, BTreeMap, or BTreeSet (unlike the primitive f32 or f64 types):
let mut s: HashSet<OrderedFloat<f32>> = HashSet::new();
s.insert(OrderedFloat(NAN));
assert!(s.contains(&OrderedFloat(NAN)));Some non-identical values are still considered equal by the PartialEq implementation,
and will therefore also be considered equal by maps, sets, and the == operator:
-0.0and+0.0are considered equal. This different sign may show up in printing, or when dividing by zero (the sign of the zero becomes the sign of the resulting infinity).- All NaN values are considered equal, even though they may have different bits, and therefore different sign, signaling/quiet status, and NaN payload bits.
Therefore, OrderedFloat may be unsuitable for use as a key in interning and memoization
applications which require equal results from equal inputs, unless these cases make no
difference or are canonicalized before insertion.
§Representation
OrderedFloat has #[repr(transparent)] and permits any value, so it is sound to use
transmute or pointer casts to convert between any type T and
OrderedFloat<T>.
However, consider using bytemuck as a safe alternative if possible.
Tuple Fields§
§0: TImplementations§
Source§impl<T: FloatCore> OrderedFloat<T>
impl<T: FloatCore> OrderedFloat<T>
Sourcepub fn into_inner(self) -> T
pub fn into_inner(self) -> T
Get the value out.
Trait Implementations§
Source§impl<'a, T> Add<&'a OrderedFloat<T>> for OrderedFloat<T>
impl<'a, T> Add<&'a OrderedFloat<T>> for OrderedFloat<T>
Source§impl<'a, T> Add<&'a T> for &'a OrderedFloat<T>
impl<'a, T> Add<&'a T> for &'a OrderedFloat<T>
Source§impl<'a, T> Add<&'a T> for OrderedFloat<T>
impl<'a, T> Add<&'a T> for OrderedFloat<T>
Source§impl<'a, T> Add<OrderedFloat<T>> for &'a OrderedFloat<T>
impl<'a, T> Add<OrderedFloat<T>> for &'a OrderedFloat<T>
Source§impl<'a, T> Add<T> for &'a OrderedFloat<T>
impl<'a, T> Add<T> for &'a OrderedFloat<T>
Source§impl<T: Add> Add<T> for OrderedFloat<T>
impl<T: Add> Add<T> for OrderedFloat<T>
Source§impl<T: Add> Add for OrderedFloat<T>
impl<T: Add> Add for OrderedFloat<T>
Source§impl<'a, T: AddAssign<&'a T>> AddAssign<&'a OrderedFloat<T>> for OrderedFloat<T>
impl<'a, T: AddAssign<&'a T>> AddAssign<&'a OrderedFloat<T>> for OrderedFloat<T>
Source§fn add_assign(&mut self, other: &'a Self)
fn add_assign(&mut self, other: &'a Self)
+= operation. Read moreSource§impl<'a, T: AddAssign<&'a T>> AddAssign<&'a T> for OrderedFloat<T>
impl<'a, T: AddAssign<&'a T>> AddAssign<&'a T> for OrderedFloat<T>
Source§fn add_assign(&mut self, other: &'a T)
fn add_assign(&mut self, other: &'a T)
+= operation. Read moreSource§impl<T: AddAssign> AddAssign<T> for OrderedFloat<T>
impl<T: AddAssign> AddAssign<T> for OrderedFloat<T>
Source§fn add_assign(&mut self, other: T)
fn add_assign(&mut self, other: T)
+= operation. Read moreSource§impl<T: AddAssign> AddAssign for OrderedFloat<T>
impl<T: AddAssign> AddAssign for OrderedFloat<T>
Source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+= operation. Read moreSource§impl<T: FloatCore> AsMut<T> for OrderedFloat<T>
impl<T: FloatCore> AsMut<T> for OrderedFloat<T>
Source§impl AsPrimitive<OrderedFloat<f32>> for OrderedFloat<f32>
impl AsPrimitive<OrderedFloat<f32>> for OrderedFloat<f32>
Source§fn as_(self) -> OrderedFloat<f32>
fn as_(self) -> OrderedFloat<f32>
as operator.Source§impl AsPrimitive<OrderedFloat<f32>> for OrderedFloat<f64>
impl AsPrimitive<OrderedFloat<f32>> for OrderedFloat<f64>
Source§fn as_(self) -> OrderedFloat<f32>
fn as_(self) -> OrderedFloat<f32>
as operator.Source§impl AsPrimitive<OrderedFloat<f32>> for f32
impl AsPrimitive<OrderedFloat<f32>> for f32
Source§fn as_(self) -> OrderedFloat<f32>
fn as_(self) -> OrderedFloat<f32>
as operator.Source§impl AsPrimitive<OrderedFloat<f32>> for f64
impl AsPrimitive<OrderedFloat<f32>> for f64
Source§fn as_(self) -> OrderedFloat<f32>
fn as_(self) -> OrderedFloat<f32>
as operator.Source§impl AsPrimitive<OrderedFloat<f32>> for i16
impl AsPrimitive<OrderedFloat<f32>> for i16
Source§fn as_(self) -> OrderedFloat<f32>
fn as_(self) -> OrderedFloat<f32>
as operator.Source§impl AsPrimitive<OrderedFloat<f32>> for i32
impl AsPrimitive<OrderedFloat<f32>> for i32
Source§fn as_(self) -> OrderedFloat<f32>
fn as_(self) -> OrderedFloat<f32>
as operator.Source§impl AsPrimitive<OrderedFloat<f32>> for i64
impl AsPrimitive<OrderedFloat<f32>> for i64
Source§fn as_(self) -> OrderedFloat<f32>
fn as_(self) -> OrderedFloat<f32>
as operator.Source§impl AsPrimitive<OrderedFloat<f32>> for i8
impl AsPrimitive<OrderedFloat<f32>> for i8
Source§fn as_(self) -> OrderedFloat<f32>
fn as_(self) -> OrderedFloat<f32>
as operator.Source§impl AsPrimitive<OrderedFloat<f32>> for isize
impl AsPrimitive<OrderedFloat<f32>> for isize
Source§fn as_(self) -> OrderedFloat<f32>
fn as_(self) -> OrderedFloat<f32>
as operator.Source§impl AsPrimitive<OrderedFloat<f32>> for u16
impl AsPrimitive<OrderedFloat<f32>> for u16
Source§fn as_(self) -> OrderedFloat<f32>
fn as_(self) -> OrderedFloat<f32>
as operator.Source§impl AsPrimitive<OrderedFloat<f32>> for u32
impl AsPrimitive<OrderedFloat<f32>> for u32
Source§fn as_(self) -> OrderedFloat<f32>
fn as_(self) -> OrderedFloat<f32>
as operator.Source§impl AsPrimitive<OrderedFloat<f32>> for u64
impl AsPrimitive<OrderedFloat<f32>> for u64
Source§fn as_(self) -> OrderedFloat<f32>
fn as_(self) -> OrderedFloat<f32>
as operator.Source§impl AsPrimitive<OrderedFloat<f32>> for u8
impl AsPrimitive<OrderedFloat<f32>> for u8
Source§fn as_(self) -> OrderedFloat<f32>
fn as_(self) -> OrderedFloat<f32>
as operator.Source§impl AsPrimitive<OrderedFloat<f32>> for usize
impl AsPrimitive<OrderedFloat<f32>> for usize
Source§fn as_(self) -> OrderedFloat<f32>
fn as_(self) -> OrderedFloat<f32>
as operator.Source§impl AsPrimitive<OrderedFloat<f64>> for OrderedFloat<f32>
impl AsPrimitive<OrderedFloat<f64>> for OrderedFloat<f32>
Source§fn as_(self) -> OrderedFloat<f64>
fn as_(self) -> OrderedFloat<f64>
as operator.Source§impl AsPrimitive<OrderedFloat<f64>> for OrderedFloat<f64>
impl AsPrimitive<OrderedFloat<f64>> for OrderedFloat<f64>
Source§fn as_(self) -> OrderedFloat<f64>
fn as_(self) -> OrderedFloat<f64>
as operator.Source§impl AsPrimitive<OrderedFloat<f64>> for f32
impl AsPrimitive<OrderedFloat<f64>> for f32
Source§fn as_(self) -> OrderedFloat<f64>
fn as_(self) -> OrderedFloat<f64>
as operator.Source§impl AsPrimitive<OrderedFloat<f64>> for f64
impl AsPrimitive<OrderedFloat<f64>> for f64
Source§fn as_(self) -> OrderedFloat<f64>
fn as_(self) -> OrderedFloat<f64>
as operator.Source§impl AsPrimitive<OrderedFloat<f64>> for i16
impl AsPrimitive<OrderedFloat<f64>> for i16
Source§fn as_(self) -> OrderedFloat<f64>
fn as_(self) -> OrderedFloat<f64>
as operator.Source§impl AsPrimitive<OrderedFloat<f64>> for i32
impl AsPrimitive<OrderedFloat<f64>> for i32
Source§fn as_(self) -> OrderedFloat<f64>
fn as_(self) -> OrderedFloat<f64>
as operator.Source§impl AsPrimitive<OrderedFloat<f64>> for i64
impl AsPrimitive<OrderedFloat<f64>> for i64
Source§fn as_(self) -> OrderedFloat<f64>
fn as_(self) -> OrderedFloat<f64>
as operator.Source§impl AsPrimitive<OrderedFloat<f64>> for i8
impl AsPrimitive<OrderedFloat<f64>> for i8
Source§fn as_(self) -> OrderedFloat<f64>
fn as_(self) -> OrderedFloat<f64>
as operator.Source§impl AsPrimitive<OrderedFloat<f64>> for isize
impl AsPrimitive<OrderedFloat<f64>> for isize
Source§fn as_(self) -> OrderedFloat<f64>
fn as_(self) -> OrderedFloat<f64>
as operator.Source§impl AsPrimitive<OrderedFloat<f64>> for u16
impl AsPrimitive<OrderedFloat<f64>> for u16
Source§fn as_(self) -> OrderedFloat<f64>
fn as_(self) -> OrderedFloat<f64>
as operator.Source§impl AsPrimitive<OrderedFloat<f64>> for u32
impl AsPrimitive<OrderedFloat<f64>> for u32
Source§fn as_(self) -> OrderedFloat<f64>
fn as_(self) -> OrderedFloat<f64>
as operator.Source§impl AsPrimitive<OrderedFloat<f64>> for u64
impl AsPrimitive<OrderedFloat<f64>> for u64
Source§fn as_(self) -> OrderedFloat<f64>
fn as_(self) -> OrderedFloat<f64>
as operator.Source§impl AsPrimitive<OrderedFloat<f64>> for u8
impl AsPrimitive<OrderedFloat<f64>> for u8
Source§fn as_(self) -> OrderedFloat<f64>
fn as_(self) -> OrderedFloat<f64>
as operator.Source§impl AsPrimitive<OrderedFloat<f64>> for usize
impl AsPrimitive<OrderedFloat<f64>> for usize
Source§fn as_(self) -> OrderedFloat<f64>
fn as_(self) -> OrderedFloat<f64>
as operator.Source§impl AsPrimitive<f32> for OrderedFloat<f32>
impl AsPrimitive<f32> for OrderedFloat<f32>
Source§impl AsPrimitive<f32> for OrderedFloat<f64>
impl AsPrimitive<f32> for OrderedFloat<f64>
Source§impl AsPrimitive<f64> for OrderedFloat<f32>
impl AsPrimitive<f64> for OrderedFloat<f32>
Source§impl AsPrimitive<f64> for OrderedFloat<f64>
impl AsPrimitive<f64> for OrderedFloat<f64>
Source§impl AsPrimitive<i16> for OrderedFloat<f32>
impl AsPrimitive<i16> for OrderedFloat<f32>
Source§impl AsPrimitive<i16> for OrderedFloat<f64>
impl AsPrimitive<i16> for OrderedFloat<f64>
Source§impl AsPrimitive<i32> for OrderedFloat<f32>
impl AsPrimitive<i32> for OrderedFloat<f32>
Source§impl AsPrimitive<i32> for OrderedFloat<f64>
impl AsPrimitive<i32> for OrderedFloat<f64>
Source§impl AsPrimitive<i64> for OrderedFloat<f32>
impl AsPrimitive<i64> for OrderedFloat<f32>
Source§impl AsPrimitive<i64> for OrderedFloat<f64>
impl AsPrimitive<i64> for OrderedFloat<f64>
Source§impl AsPrimitive<i8> for OrderedFloat<f32>
impl AsPrimitive<i8> for OrderedFloat<f32>
Source§impl AsPrimitive<i8> for OrderedFloat<f64>
impl AsPrimitive<i8> for OrderedFloat<f64>
Source§impl AsPrimitive<isize> for OrderedFloat<f32>
impl AsPrimitive<isize> for OrderedFloat<f32>
Source§impl AsPrimitive<isize> for OrderedFloat<f64>
impl AsPrimitive<isize> for OrderedFloat<f64>
Source§impl AsPrimitive<u16> for OrderedFloat<f32>
impl AsPrimitive<u16> for OrderedFloat<f32>
Source§impl AsPrimitive<u16> for OrderedFloat<f64>
impl AsPrimitive<u16> for OrderedFloat<f64>
Source§impl AsPrimitive<u32> for OrderedFloat<f32>
impl AsPrimitive<u32> for OrderedFloat<f32>
Source§impl AsPrimitive<u32> for OrderedFloat<f64>
impl AsPrimitive<u32> for OrderedFloat<f64>
Source§impl AsPrimitive<u64> for OrderedFloat<f32>
impl AsPrimitive<u64> for OrderedFloat<f32>
Source§impl AsPrimitive<u64> for OrderedFloat<f64>
impl AsPrimitive<u64> for OrderedFloat<f64>
Source§impl AsPrimitive<u8> for OrderedFloat<f32>
impl AsPrimitive<u8> for OrderedFloat<f32>
Source§impl AsPrimitive<u8> for OrderedFloat<f64>
impl AsPrimitive<u8> for OrderedFloat<f64>
Source§impl AsPrimitive<usize> for OrderedFloat<f32>
impl AsPrimitive<usize> for OrderedFloat<f32>
Source§impl AsPrimitive<usize> for OrderedFloat<f64>
impl AsPrimitive<usize> for OrderedFloat<f64>
Source§impl<T: FloatCore> AsRef<T> for OrderedFloat<T>
impl<T: FloatCore> AsRef<T> for OrderedFloat<T>
Source§impl<T: Bounded> Bounded for OrderedFloat<T>
impl<T: Bounded> Bounded for OrderedFloat<T>
Source§impl<T: Clone> Clone for OrderedFloat<T>
impl<T: Clone> Clone for OrderedFloat<T>
Source§fn clone(&self) -> OrderedFloat<T>
fn clone(&self) -> OrderedFloat<T>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<T: Debug> Debug for OrderedFloat<T>
impl<T: Debug> Debug for OrderedFloat<T>
Source§impl<T: Default> Default for OrderedFloat<T>
impl<T: Default> Default for OrderedFloat<T>
Source§fn default() -> OrderedFloat<T>
fn default() -> OrderedFloat<T>
Source§impl<T: FloatCore> Deref for OrderedFloat<T>
impl<T: FloatCore> Deref for OrderedFloat<T>
Source§impl<T: FloatCore> DerefMut for OrderedFloat<T>
impl<T: FloatCore> DerefMut for OrderedFloat<T>
Source§impl<'a, T> Div<&'a OrderedFloat<T>> for OrderedFloat<T>
impl<'a, T> Div<&'a OrderedFloat<T>> for OrderedFloat<T>
Source§impl<'a, T> Div<&'a T> for &'a OrderedFloat<T>
impl<'a, T> Div<&'a T> for &'a OrderedFloat<T>
Source§impl<'a, T> Div<&'a T> for OrderedFloat<T>
impl<'a, T> Div<&'a T> for OrderedFloat<T>
Source§impl<'a, T> Div<OrderedFloat<T>> for &'a OrderedFloat<T>
impl<'a, T> Div<OrderedFloat<T>> for &'a OrderedFloat<T>
Source§impl<'a, T> Div<T> for &'a OrderedFloat<T>
impl<'a, T> Div<T> for &'a OrderedFloat<T>
Source§impl<T: Div> Div<T> for OrderedFloat<T>
impl<T: Div> Div<T> for OrderedFloat<T>
Source§impl<T: Div> Div for OrderedFloat<T>
impl<T: Div> Div for OrderedFloat<T>
Source§impl<'a, T: DivAssign<&'a T>> DivAssign<&'a OrderedFloat<T>> for OrderedFloat<T>
impl<'a, T: DivAssign<&'a T>> DivAssign<&'a OrderedFloat<T>> for OrderedFloat<T>
Source§fn div_assign(&mut self, other: &'a Self)
fn div_assign(&mut self, other: &'a Self)
/= operation. Read moreSource§impl<'a, T: DivAssign<&'a T>> DivAssign<&'a T> for OrderedFloat<T>
impl<'a, T: DivAssign<&'a T>> DivAssign<&'a T> for OrderedFloat<T>
Source§fn div_assign(&mut self, other: &'a T)
fn div_assign(&mut self, other: &'a T)
/= operation. Read moreSource§impl<T: DivAssign> DivAssign<T> for OrderedFloat<T>
impl<T: DivAssign> DivAssign<T> for OrderedFloat<T>
Source§fn div_assign(&mut self, other: T)
fn div_assign(&mut self, other: T)
/= operation. Read moreSource§impl<T: DivAssign> DivAssign for OrderedFloat<T>
impl<T: DivAssign> DivAssign for OrderedFloat<T>
Source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/= operation. Read moreSource§impl<T: Float + FloatCore> Float for OrderedFloat<T>
impl<T: Float + FloatCore> Float for OrderedFloat<T>
Source§fn neg_infinity() -> Self
fn neg_infinity() -> Self
Source§fn min_value() -> Self
fn min_value() -> Self
Source§fn min_positive_value() -> Self
fn min_positive_value() -> Self
Source§fn max_value() -> Self
fn max_value() -> Self
Source§fn is_infinite(self) -> bool
fn is_infinite(self) -> bool
true if this value is positive infinity or negative infinity and
false otherwise. Read moreSource§fn classify(self) -> FpCategory
fn classify(self) -> FpCategory
Source§fn ceil(self) -> Self
fn ceil(self) -> Self
Source§fn round(self) -> Self
fn round(self) -> Self
0.0. Read moreSource§fn is_sign_positive(self) -> bool
fn is_sign_positive(self) -> bool
Source§fn is_sign_negative(self) -> bool
fn is_sign_negative(self) -> bool
true if self is negative, including -0.0,
Float::neg_infinity(), and -Float::nan(). Read moreSource§fn mul_add(self, a: Self, b: Self) -> Self
fn mul_add(self, a: Self, b: Self) -> Self
(self * a) + b with only one rounding
error, yielding a more accurate result than an unfused multiply-add. Read moreSource§fn log(self, base: Self) -> Self
fn log(self, base: Self) -> Self
Source§fn hypot(self, other: Self) -> Self
fn hypot(self, other: Self) -> Self
x and y. Read moreSource§fn asin(self) -> Self
fn asin(self) -> Self
Source§fn acos(self) -> Self
fn acos(self) -> Self
Source§fn atan(self) -> Self
fn atan(self) -> Self
Source§fn exp_m1(self) -> Self
fn exp_m1(self) -> Self
e^(self) - 1 in a way that is accurate even if the
number is close to zero. Read moreSource§fn ln_1p(self) -> Self
fn ln_1p(self) -> Self
ln(1+n) (natural logarithm) more accurately than if
the operations were performed separately. Read moreSource§fn integer_decode(self) -> (u64, i16, i8)
fn integer_decode(self) -> (u64, i16, i8)
sign * mantissa * 2 ^ exponent. Read moreSource§fn to_degrees(self) -> Self
fn to_degrees(self) -> Self
Source§fn to_radians(self) -> Self
fn to_radians(self) -> Self
Source§impl<T: FloatConst> FloatConst for OrderedFloat<T>
impl<T: FloatConst> FloatConst for OrderedFloat<T>
Source§fn FRAC_1_SQRT_2() -> Self
fn FRAC_1_SQRT_2() -> Self
1.0 / sqrt(2.0).Source§fn FRAC_2_SQRT_PI() -> Self
fn FRAC_2_SQRT_PI() -> Self
2.0 / sqrt(π).Source§impl<T: FloatCore> FloatCore for OrderedFloat<T>
impl<T: FloatCore> FloatCore for OrderedFloat<T>
Source§fn neg_infinity() -> Self
fn neg_infinity() -> Self
Source§fn min_value() -> Self
fn min_value() -> Self
Source§fn min_positive_value() -> Self
fn min_positive_value() -> Self
Source§fn max_value() -> Self
fn max_value() -> Self
Source§fn is_infinite(self) -> bool
fn is_infinite(self) -> bool
true if the number is infinite. Read moreSource§fn is_normal(self) -> bool
fn is_normal(self) -> bool
true if the number is neither zero, infinite, subnormal or NaN. Read moreSource§fn classify(self) -> FpCategory
fn classify(self) -> FpCategory
Source§fn ceil(self) -> Self
fn ceil(self) -> Self
Source§fn round(self) -> Self
fn round(self) -> Self
0.0. Read moreSource§fn abs(self) -> Self
fn abs(self) -> Self
self. Returns FloatCore::nan() if the
number is FloatCore::nan(). Read moreSource§fn is_sign_positive(self) -> bool
fn is_sign_positive(self) -> bool
true if self is positive, including +0.0 and
FloatCore::infinity(), and FloatCore::nan(). Read moreSource§fn is_sign_negative(self) -> bool
fn is_sign_negative(self) -> bool
true if self is negative, including -0.0 and
FloatCore::neg_infinity(), and -FloatCore::nan(). Read moreSource§fn recip(self) -> Self
fn recip(self) -> Self
Source§fn integer_decode(self) -> (u64, i16, i8)
fn integer_decode(self) -> (u64, i16, i8)
sign * mantissa * 2 ^ exponent. Read moreSource§fn to_degrees(self) -> Self
fn to_degrees(self) -> Self
Source§fn to_radians(self) -> Self
fn to_radians(self) -> Self
Source§impl<'a, T: FloatCore> From<&'a T> for &'a OrderedFloat<T>
impl<'a, T: FloatCore> From<&'a T> for &'a OrderedFloat<T>
Source§fn from(t: &'a T) -> &'a OrderedFloat<T>
fn from(t: &'a T) -> &'a OrderedFloat<T>
Source§impl<'a, T: FloatCore> From<&'a mut T> for &'a mut OrderedFloat<T>
impl<'a, T: FloatCore> From<&'a mut T> for &'a mut OrderedFloat<T>
Source§fn from(t: &'a mut T) -> &'a mut OrderedFloat<T>
fn from(t: &'a mut T) -> &'a mut OrderedFloat<T>
Source§impl<T: FloatCore> From<T> for OrderedFloat<T>
impl<T: FloatCore> From<T> for OrderedFloat<T>
Source§impl<T: FromPrimitive> FromPrimitive for OrderedFloat<T>
impl<T: FromPrimitive> FromPrimitive for OrderedFloat<T>
Source§fn from_i64(n: i64) -> Option<Self>
fn from_i64(n: i64) -> Option<Self>
i64 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned.Source§fn from_u64(n: u64) -> Option<Self>
fn from_u64(n: u64) -> Option<Self>
u64 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned.Source§fn from_isize(n: isize) -> Option<Self>
fn from_isize(n: isize) -> Option<Self>
isize to return an optional value of this type. If the
value cannot be represented by this type, then None is returned.Source§fn from_i8(n: i8) -> Option<Self>
fn from_i8(n: i8) -> Option<Self>
i8 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned.Source§fn from_i16(n: i16) -> Option<Self>
fn from_i16(n: i16) -> Option<Self>
i16 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned.Source§fn from_i32(n: i32) -> Option<Self>
fn from_i32(n: i32) -> Option<Self>
i32 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned.Source§fn from_usize(n: usize) -> Option<Self>
fn from_usize(n: usize) -> Option<Self>
usize to return an optional value of this type. If the
value cannot be represented by this type, then None is returned.Source§fn from_u8(n: u8) -> Option<Self>
fn from_u8(n: u8) -> Option<Self>
u8 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned.Source§fn from_u16(n: u16) -> Option<Self>
fn from_u16(n: u16) -> Option<Self>
u16 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned.Source§fn from_u32(n: u32) -> Option<Self>
fn from_u32(n: u32) -> Option<Self>
u32 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned.Source§fn from_f32(n: f32) -> Option<Self>
fn from_f32(n: f32) -> Option<Self>
f32 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned.Source§fn from_f64(n: f64) -> Option<Self>
fn from_f64(n: f64) -> Option<Self>
f64 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned. Read moreSource§impl<T: FromStr> FromStr for OrderedFloat<T>
impl<T: FromStr> FromStr for OrderedFloat<T>
Source§fn from_str(s: &str) -> Result<Self, Self::Err>
fn from_str(s: &str) -> Result<Self, Self::Err>
Convert a &str to OrderedFloat. Returns an error if the string fails to parse.
use ordered_float::OrderedFloat;
assert!("-10".parse::<OrderedFloat<f32>>().is_ok());
assert!("abc".parse::<OrderedFloat<f32>>().is_err());
assert!("NaN".parse::<OrderedFloat<f32>>().is_ok());Source§impl<T: PrimitiveFloat> Hash for OrderedFloat<T>
impl<T: PrimitiveFloat> Hash for OrderedFloat<T>
Source§impl<'a, T> Mul<&'a OrderedFloat<T>> for OrderedFloat<T>
impl<'a, T> Mul<&'a OrderedFloat<T>> for OrderedFloat<T>
Source§impl<'a, T> Mul<&'a T> for &'a OrderedFloat<T>
impl<'a, T> Mul<&'a T> for &'a OrderedFloat<T>
Source§impl<'a, T> Mul<&'a T> for OrderedFloat<T>
impl<'a, T> Mul<&'a T> for OrderedFloat<T>
Source§impl<'a, T> Mul<OrderedFloat<T>> for &'a OrderedFloat<T>
impl<'a, T> Mul<OrderedFloat<T>> for &'a OrderedFloat<T>
Source§impl<'a, T> Mul<T> for &'a OrderedFloat<T>
impl<'a, T> Mul<T> for &'a OrderedFloat<T>
Source§impl<T: Mul> Mul<T> for OrderedFloat<T>
impl<T: Mul> Mul<T> for OrderedFloat<T>
Source§impl<T: Mul> Mul for OrderedFloat<T>
impl<T: Mul> Mul for OrderedFloat<T>
Source§impl<'a, T: MulAssign<&'a T>> MulAssign<&'a OrderedFloat<T>> for OrderedFloat<T>
impl<'a, T: MulAssign<&'a T>> MulAssign<&'a OrderedFloat<T>> for OrderedFloat<T>
Source§fn mul_assign(&mut self, other: &'a Self)
fn mul_assign(&mut self, other: &'a Self)
*= operation. Read moreSource§impl<'a, T: MulAssign<&'a T>> MulAssign<&'a T> for OrderedFloat<T>
impl<'a, T: MulAssign<&'a T>> MulAssign<&'a T> for OrderedFloat<T>
Source§fn mul_assign(&mut self, other: &'a T)
fn mul_assign(&mut self, other: &'a T)
*= operation. Read moreSource§impl<T: MulAssign> MulAssign<T> for OrderedFloat<T>
impl<T: MulAssign> MulAssign<T> for OrderedFloat<T>
Source§fn mul_assign(&mut self, other: T)
fn mul_assign(&mut self, other: T)
*= operation. Read moreSource§impl<T: MulAssign> MulAssign for OrderedFloat<T>
impl<T: MulAssign> MulAssign for OrderedFloat<T>
Source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*= operation. Read moreSource§impl<'a, T> Neg for &'a OrderedFloat<T>
impl<'a, T> Neg for &'a OrderedFloat<T>
Source§impl<T: Neg> Neg for OrderedFloat<T>
impl<T: Neg> Neg for OrderedFloat<T>
Source§impl<T: FloatCore + Num> Num for OrderedFloat<T>
impl<T: FloatCore + Num> Num for OrderedFloat<T>
type FromStrRadixErr = <T as Num>::FromStrRadixErr
Source§fn from_str_radix(str: &str, radix: u32) -> Result<Self, Self::FromStrRadixErr>
fn from_str_radix(str: &str, radix: u32) -> Result<Self, Self::FromStrRadixErr>
2..=36). Read moreSource§impl<T: NumCast> NumCast for OrderedFloat<T>
impl<T: NumCast> NumCast for OrderedFloat<T>
Source§impl<T: One> One for OrderedFloat<T>
impl<T: One> One for OrderedFloat<T>
Source§impl<T: FloatCore> Ord for OrderedFloat<T>
impl<T: FloatCore> Ord for OrderedFloat<T>
Source§impl<T: FloatCore> PartialEq<T> for OrderedFloat<T>
impl<T: FloatCore> PartialEq<T> for OrderedFloat<T>
Source§impl<T: FloatCore> PartialEq for OrderedFloat<T>
impl<T: FloatCore> PartialEq for OrderedFloat<T>
Source§impl<T: FloatCore> PartialOrd for OrderedFloat<T>
impl<T: FloatCore> PartialOrd for OrderedFloat<T>
Source§impl<'a, 'b> Pow<&'a OrderedFloat<f32>> for &'b OrderedFloat<f32>
impl<'a, 'b> Pow<&'a OrderedFloat<f32>> for &'b OrderedFloat<f32>
Source§type Output = OrderedFloat<f32>
type Output = OrderedFloat<f32>
Source§fn pow(self, rhs: &'a OrderedFloat<f32>) -> OrderedFloat<f32>
fn pow(self, rhs: &'a OrderedFloat<f32>) -> OrderedFloat<f32>
Source§impl<'a, 'b> Pow<&'a OrderedFloat<f32>> for &'b OrderedFloat<f64>
impl<'a, 'b> Pow<&'a OrderedFloat<f32>> for &'b OrderedFloat<f64>
Source§type Output = OrderedFloat<f64>
type Output = OrderedFloat<f64>
Source§fn pow(self, rhs: &'a OrderedFloat<f32>) -> OrderedFloat<f64>
fn pow(self, rhs: &'a OrderedFloat<f32>) -> OrderedFloat<f64>
Source§impl<'a> Pow<&'a OrderedFloat<f32>> for OrderedFloat<f32>
impl<'a> Pow<&'a OrderedFloat<f32>> for OrderedFloat<f32>
Source§type Output = OrderedFloat<f32>
type Output = OrderedFloat<f32>
Source§fn pow(self, rhs: &'a OrderedFloat<f32>) -> OrderedFloat<f32>
fn pow(self, rhs: &'a OrderedFloat<f32>) -> OrderedFloat<f32>
Source§impl<'a> Pow<&'a OrderedFloat<f32>> for OrderedFloat<f64>
impl<'a> Pow<&'a OrderedFloat<f32>> for OrderedFloat<f64>
Source§type Output = OrderedFloat<f64>
type Output = OrderedFloat<f64>
Source§fn pow(self, rhs: &'a OrderedFloat<f32>) -> OrderedFloat<f64>
fn pow(self, rhs: &'a OrderedFloat<f32>) -> OrderedFloat<f64>
Source§impl<'a, 'b> Pow<&'a OrderedFloat<f64>> for &'b OrderedFloat<f64>
impl<'a, 'b> Pow<&'a OrderedFloat<f64>> for &'b OrderedFloat<f64>
Source§type Output = OrderedFloat<f64>
type Output = OrderedFloat<f64>
Source§fn pow(self, rhs: &'a OrderedFloat<f64>) -> OrderedFloat<f64>
fn pow(self, rhs: &'a OrderedFloat<f64>) -> OrderedFloat<f64>
Source§impl<'a> Pow<&'a OrderedFloat<f64>> for OrderedFloat<f64>
impl<'a> Pow<&'a OrderedFloat<f64>> for OrderedFloat<f64>
Source§type Output = OrderedFloat<f64>
type Output = OrderedFloat<f64>
Source§fn pow(self, rhs: &'a OrderedFloat<f64>) -> OrderedFloat<f64>
fn pow(self, rhs: &'a OrderedFloat<f64>) -> OrderedFloat<f64>
Source§impl<'a> Pow<OrderedFloat<f32>> for &'a OrderedFloat<f32>
impl<'a> Pow<OrderedFloat<f32>> for &'a OrderedFloat<f32>
Source§type Output = OrderedFloat<f32>
type Output = OrderedFloat<f32>
Source§fn pow(self, rhs: OrderedFloat<f32>) -> OrderedFloat<f32>
fn pow(self, rhs: OrderedFloat<f32>) -> OrderedFloat<f32>
Source§impl<'a> Pow<OrderedFloat<f32>> for &'a OrderedFloat<f64>
impl<'a> Pow<OrderedFloat<f32>> for &'a OrderedFloat<f64>
Source§type Output = OrderedFloat<f64>
type Output = OrderedFloat<f64>
Source§fn pow(self, rhs: OrderedFloat<f32>) -> OrderedFloat<f64>
fn pow(self, rhs: OrderedFloat<f32>) -> OrderedFloat<f64>
Source§impl Pow<OrderedFloat<f32>> for OrderedFloat<f32>
impl Pow<OrderedFloat<f32>> for OrderedFloat<f32>
Source§type Output = OrderedFloat<f32>
type Output = OrderedFloat<f32>
Source§fn pow(self, rhs: OrderedFloat<f32>) -> OrderedFloat<f32>
fn pow(self, rhs: OrderedFloat<f32>) -> OrderedFloat<f32>
Source§impl Pow<OrderedFloat<f32>> for OrderedFloat<f64>
impl Pow<OrderedFloat<f32>> for OrderedFloat<f64>
Source§type Output = OrderedFloat<f64>
type Output = OrderedFloat<f64>
Source§fn pow(self, rhs: OrderedFloat<f32>) -> OrderedFloat<f64>
fn pow(self, rhs: OrderedFloat<f32>) -> OrderedFloat<f64>
Source§impl<'a> Pow<OrderedFloat<f64>> for &'a OrderedFloat<f64>
impl<'a> Pow<OrderedFloat<f64>> for &'a OrderedFloat<f64>
Source§type Output = OrderedFloat<f64>
type Output = OrderedFloat<f64>
Source§fn pow(self, rhs: OrderedFloat<f64>) -> OrderedFloat<f64>
fn pow(self, rhs: OrderedFloat<f64>) -> OrderedFloat<f64>
Source§impl Pow<OrderedFloat<f64>> for OrderedFloat<f64>
impl Pow<OrderedFloat<f64>> for OrderedFloat<f64>
Source§type Output = OrderedFloat<f64>
type Output = OrderedFloat<f64>
Source§fn pow(self, rhs: OrderedFloat<f64>) -> OrderedFloat<f64>
fn pow(self, rhs: OrderedFloat<f64>) -> OrderedFloat<f64>
Source§impl<'a, T: FloatCore + Product + 'a> Product<&'a OrderedFloat<T>> for OrderedFloat<T>
impl<'a, T: FloatCore + Product + 'a> Product<&'a OrderedFloat<T>> for OrderedFloat<T>
Source§fn product<I: Iterator<Item = &'a OrderedFloat<T>>>(iter: I) -> Self
fn product<I: Iterator<Item = &'a OrderedFloat<T>>>(iter: I) -> Self
Self from the elements by multiplying
the items.Source§impl<T: FloatCore + Product> Product for OrderedFloat<T>
impl<T: FloatCore + Product> Product for OrderedFloat<T>
Source§fn product<I: Iterator<Item = OrderedFloat<T>>>(iter: I) -> Self
fn product<I: Iterator<Item = OrderedFloat<T>>>(iter: I) -> Self
Self from the elements by multiplying
the items.Source§impl<'a, T> Rem<&'a OrderedFloat<T>> for OrderedFloat<T>
impl<'a, T> Rem<&'a OrderedFloat<T>> for OrderedFloat<T>
Source§impl<'a, T> Rem<&'a T> for &'a OrderedFloat<T>
impl<'a, T> Rem<&'a T> for &'a OrderedFloat<T>
Source§impl<'a, T> Rem<&'a T> for OrderedFloat<T>
impl<'a, T> Rem<&'a T> for OrderedFloat<T>
Source§impl<'a, T> Rem<OrderedFloat<T>> for &'a OrderedFloat<T>
impl<'a, T> Rem<OrderedFloat<T>> for &'a OrderedFloat<T>
Source§impl<'a, T> Rem<T> for &'a OrderedFloat<T>
impl<'a, T> Rem<T> for &'a OrderedFloat<T>
Source§impl<T: Rem> Rem<T> for OrderedFloat<T>
impl<T: Rem> Rem<T> for OrderedFloat<T>
Source§impl<T: Rem> Rem for OrderedFloat<T>
impl<T: Rem> Rem for OrderedFloat<T>
Source§impl<'a, T: RemAssign<&'a T>> RemAssign<&'a OrderedFloat<T>> for OrderedFloat<T>
impl<'a, T: RemAssign<&'a T>> RemAssign<&'a OrderedFloat<T>> for OrderedFloat<T>
Source§fn rem_assign(&mut self, other: &'a Self)
fn rem_assign(&mut self, other: &'a Self)
%= operation. Read moreSource§impl<'a, T: RemAssign<&'a T>> RemAssign<&'a T> for OrderedFloat<T>
impl<'a, T: RemAssign<&'a T>> RemAssign<&'a T> for OrderedFloat<T>
Source§fn rem_assign(&mut self, other: &'a T)
fn rem_assign(&mut self, other: &'a T)
%= operation. Read moreSource§impl<T: RemAssign> RemAssign<T> for OrderedFloat<T>
impl<T: RemAssign> RemAssign<T> for OrderedFloat<T>
Source§fn rem_assign(&mut self, other: T)
fn rem_assign(&mut self, other: T)
%= operation. Read moreSource§impl<T: RemAssign> RemAssign for OrderedFloat<T>
impl<T: RemAssign> RemAssign for OrderedFloat<T>
Source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%= operation. Read moreSource§impl<T: FloatCore + Signed> Signed for OrderedFloat<T>
impl<T: FloatCore + Signed> Signed for OrderedFloat<T>
Source§fn is_positive(&self) -> bool
fn is_positive(&self) -> bool
Source§fn is_negative(&self) -> bool
fn is_negative(&self) -> bool
Source§impl<'a, T> Sub<&'a OrderedFloat<T>> for OrderedFloat<T>
impl<'a, T> Sub<&'a OrderedFloat<T>> for OrderedFloat<T>
Source§impl<'a, T> Sub<&'a T> for &'a OrderedFloat<T>
impl<'a, T> Sub<&'a T> for &'a OrderedFloat<T>
Source§impl<'a, T> Sub<&'a T> for OrderedFloat<T>
impl<'a, T> Sub<&'a T> for OrderedFloat<T>
Source§impl<'a, T> Sub<OrderedFloat<T>> for &'a OrderedFloat<T>
impl<'a, T> Sub<OrderedFloat<T>> for &'a OrderedFloat<T>
Source§impl<'a, T> Sub<T> for &'a OrderedFloat<T>
impl<'a, T> Sub<T> for &'a OrderedFloat<T>
Source§impl<T: Sub> Sub<T> for OrderedFloat<T>
impl<T: Sub> Sub<T> for OrderedFloat<T>
Source§impl<T: Sub> Sub for OrderedFloat<T>
impl<T: Sub> Sub for OrderedFloat<T>
Source§impl<'a, T: SubAssign<&'a T>> SubAssign<&'a OrderedFloat<T>> for OrderedFloat<T>
impl<'a, T: SubAssign<&'a T>> SubAssign<&'a OrderedFloat<T>> for OrderedFloat<T>
Source§fn sub_assign(&mut self, other: &'a Self)
fn sub_assign(&mut self, other: &'a Self)
-= operation. Read moreSource§impl<'a, T: SubAssign<&'a T>> SubAssign<&'a T> for OrderedFloat<T>
impl<'a, T: SubAssign<&'a T>> SubAssign<&'a T> for OrderedFloat<T>
Source§fn sub_assign(&mut self, other: &'a T)
fn sub_assign(&mut self, other: &'a T)
-= operation. Read moreSource§impl<T: SubAssign> SubAssign<T> for OrderedFloat<T>
impl<T: SubAssign> SubAssign<T> for OrderedFloat<T>
Source§fn sub_assign(&mut self, other: T)
fn sub_assign(&mut self, other: T)
-= operation. Read moreSource§impl<T: SubAssign> SubAssign for OrderedFloat<T>
impl<T: SubAssign> SubAssign for OrderedFloat<T>
Source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-= operation. Read moreSource§impl<'a, T: FloatCore + Sum + 'a> Sum<&'a OrderedFloat<T>> for OrderedFloat<T>
impl<'a, T: FloatCore + Sum + 'a> Sum<&'a OrderedFloat<T>> for OrderedFloat<T>
Source§fn sum<I: Iterator<Item = &'a OrderedFloat<T>>>(iter: I) -> Self
fn sum<I: Iterator<Item = &'a OrderedFloat<T>>>(iter: I) -> Self
Self from the elements by “summing up”
the items.Source§impl<T: FloatCore + Sum> Sum for OrderedFloat<T>
Adds a float directly.
impl<T: FloatCore + Sum> Sum for OrderedFloat<T>
Adds a float directly.
Source§fn sum<I: Iterator<Item = OrderedFloat<T>>>(iter: I) -> Self
fn sum<I: Iterator<Item = OrderedFloat<T>>>(iter: I) -> Self
Self from the elements by “summing up”
the items.Source§impl<T: ToPrimitive> ToPrimitive for OrderedFloat<T>
impl<T: ToPrimitive> ToPrimitive for OrderedFloat<T>
Source§fn to_i64(&self) -> Option<i64>
fn to_i64(&self) -> Option<i64>
self to an i64. If the value cannot be
represented by an i64, then None is returned.Source§fn to_u64(&self) -> Option<u64>
fn to_u64(&self) -> Option<u64>
self to a u64. If the value cannot be
represented by a u64, then None is returned.Source§fn to_isize(&self) -> Option<isize>
fn to_isize(&self) -> Option<isize>
self to an isize. If the value cannot be
represented by an isize, then None is returned.Source§fn to_i8(&self) -> Option<i8>
fn to_i8(&self) -> Option<i8>
self to an i8. If the value cannot be
represented by an i8, then None is returned.Source§fn to_i16(&self) -> Option<i16>
fn to_i16(&self) -> Option<i16>
self to an i16. If the value cannot be
represented by an i16, then None is returned.Source§fn to_i32(&self) -> Option<i32>
fn to_i32(&self) -> Option<i32>
self to an i32. If the value cannot be
represented by an i32, then None is returned.Source§fn to_usize(&self) -> Option<usize>
fn to_usize(&self) -> Option<usize>
self to a usize. If the value cannot be
represented by a usize, then None is returned.Source§fn to_u8(&self) -> Option<u8>
fn to_u8(&self) -> Option<u8>
self to a u8. If the value cannot be
represented by a u8, then None is returned.Source§fn to_u16(&self) -> Option<u16>
fn to_u16(&self) -> Option<u16>
self to a u16. If the value cannot be
represented by a u16, then None is returned.Source§fn to_u32(&self) -> Option<u32>
fn to_u32(&self) -> Option<u32>
self to a u32. If the value cannot be
represented by a u32, then None is returned.Source§fn to_f32(&self) -> Option<f32>
fn to_f32(&self) -> Option<f32>
self to an f32. Overflows may map to positive
or negative inifinity, otherwise None is returned if the value cannot
be represented by an f32.Source§fn to_f64(&self) -> Option<f64>
fn to_f64(&self) -> Option<f64>
self to an f64. Overflows may map to positive
or negative inifinity, otherwise None is returned if the value cannot
be represented by an f64. Read moreSource§impl<T: Zero> Zero for OrderedFloat<T>
impl<T: Zero> Zero for OrderedFloat<T>
impl<T: Copy> Copy for OrderedFloat<T>
impl<T: FloatCore> Eq for OrderedFloat<T>
Auto Trait Implementations§
impl<T> Freeze for OrderedFloat<T>where
T: Freeze,
impl<T> RefUnwindSafe for OrderedFloat<T>where
T: RefUnwindSafe,
impl<T> Send for OrderedFloat<T>where
T: Send,
impl<T> Sync for OrderedFloat<T>where
T: Sync,
impl<T> Unpin for OrderedFloat<T>where
T: Unpin,
impl<T> UnwindSafe for OrderedFloat<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> LowerBounded for Twhere
T: Bounded,
impl<T> LowerBounded for Twhere
T: Bounded,
Source§impl<T> Real for Twhere
T: Float,
impl<T> Real for Twhere
T: Float,
Source§fn min_positive_value() -> T
fn min_positive_value() -> T
Source§fn round(self) -> T
fn round(self) -> T
0.0. Read moreSource§fn is_sign_positive(self) -> bool
fn is_sign_positive(self) -> bool
true if self is positive, including +0.0,
Float::infinity(), and with newer versions of Rust f64::NAN. Read moreSource§fn is_sign_negative(self) -> bool
fn is_sign_negative(self) -> bool
true if self is negative, including -0.0,
Float::neg_infinity(), and with newer versions of Rust -f64::NAN. Read moreSource§fn mul_add(self, a: T, b: T) -> T
fn mul_add(self, a: T, b: T) -> T
(self * a) + b with only one rounding
error, yielding a more accurate result than an unfused multiply-add. Read moreSource§fn log(self, base: T) -> T
fn log(self, base: T) -> T
Source§fn to_degrees(self) -> T
fn to_degrees(self) -> T
Source§fn to_radians(self) -> T
fn to_radians(self) -> T
Source§fn hypot(self, other: T) -> T
fn hypot(self, other: T) -> T
x and y. Read moreSource§fn asin(self) -> T
fn asin(self) -> T
Source§fn acos(self) -> T
fn acos(self) -> T
Source§fn atan(self) -> T
fn atan(self) -> T
Source§fn exp_m1(self) -> T
fn exp_m1(self) -> T
e^(self) - 1 in a way that is accurate even if the
number is close to zero. Read more