Struct otter_api_tests::imports::ordered_float::NotNan [−]
#[repr(transparent)]pub struct NotNan<T>(_);
Expand description
A wrapper around floats providing an implementation of Eq, Ord and Hash.
A NaN value cannot be stored in this type.
use ordered_float::NotNan; let mut v = [ NotNan::new(2.0).unwrap(), NotNan::new(1.0).unwrap(), ]; v.sort(); assert_eq!(v, [1.0, 2.0]);
Because NotNan 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<NotNan<f32>> = HashSet::new(); let key = NotNan::new(1.0).unwrap(); s.insert(key); assert!(s.contains(&key));
Arithmetic on NotNan values will panic if it produces a NaN value:
let a = NotNan::new(std::f32::INFINITY).unwrap(); let b = NotNan::new(std::f32::NEG_INFINITY).unwrap(); // This will panic: let c = a + b;
Implementations
pub fn new(val: T) -> Result<NotNan<T>, FloatIsNan>
pub fn new(val: T) -> Result<NotNan<T>, FloatIsNan>Create a NotNan value.
Returns Err if val is NaN
impl<T> NotNan<T>
impl<T> NotNan<T>pub fn into_inner(self) -> T
pub fn into_inner(self) -> TGet the value out.
pub const unsafe fn new_unchecked(val: T) -> NotNan<T>
pub const unsafe fn new_unchecked(val: T) -> NotNan<T>Create a NotNan value from a value that is guaranteed to not be NaN
Safety
Behaviour is undefined if val is NaN
pub const unsafe fn unchecked_new(val: T) -> NotNan<T>👎 Deprecated since 2.5.0: Please use the new_unchecked function instead.
pub const unsafe fn unchecked_new(val: T) -> NotNan<T>Please use the new_unchecked function instead.
Create a NotNan value from a value that is guaranteed to not be NaN
Safety
Behaviour is undefined if val is NaN
Trait Implementations
Adds a float directly.
Panics if the provided value is NaN or the computation results in NaN
pub fn add_assign(&mut self, other: &NotNan<T>)
pub fn add_assign(&mut self, other: &NotNan<T>)Performs the += operation. Read more
pub fn add_assign(&mut self, other: &T)
pub fn add_assign(&mut self, other: &T)Performs the += operation. Read more
pub fn add_assign(&mut self, other: NotNan<T>)
pub fn add_assign(&mut self, other: NotNan<T>)Performs the += operation. Read more
pub fn add_assign(&mut self, other: T)
pub fn add_assign(&mut self, other: T)Performs the += operation. Read more
Divides a float directly.
Panics if the provided value is NaN or the computation results in NaN
pub fn div_assign(&mut self, other: &NotNan<T>)
pub fn div_assign(&mut self, other: &NotNan<T>)Performs the /= operation. Read more
pub fn div_assign(&mut self, other: &T)
pub fn div_assign(&mut self, other: &T)Performs the /= operation. Read more
pub fn div_assign(&mut self, other: NotNan<T>)
pub fn div_assign(&mut self, other: NotNan<T>)Performs the /= operation. Read more
pub fn div_assign(&mut self, other: T)
pub fn div_assign(&mut self, other: T)Performs the /= operation. Read more
impl<T> FromPrimitive for NotNan<T> where
T: Float + FromPrimitive,
impl<T> FromPrimitive for NotNan<T> where
T: Float + FromPrimitive, Converts an i64 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned. Read more
Converts an u64 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned. Read more
pub fn from_isize(n: isize) -> Option<NotNan<T>>
pub fn from_isize(n: isize) -> Option<NotNan<T>>Converts an isize to return an optional value of this type. If the
value cannot be represented by this type, then None is returned. Read more
Converts an i8 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned. Read more
Converts an i16 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned. Read more
Converts an i32 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned. Read more
pub fn from_usize(n: usize) -> Option<NotNan<T>>
pub fn from_usize(n: usize) -> Option<NotNan<T>>Converts a usize to return an optional value of this type. If the
value cannot be represented by this type, then None is returned. Read more
Converts an u8 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned. Read more
Converts an u16 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned. Read more
Converts an u32 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned. Read more
Converts a f32 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned. Read more
Converts a f64 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned. Read more
Converts an i128 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned. Read more
Convert a &str to NotNan. Returns an error if the string fails to parse,
or if the resulting value is NaN
use ordered_float::NotNan; assert!("-10".parse::<NotNan<f32>>().is_ok()); assert!("abc".parse::<NotNan<f32>>().is_err()); assert!("NaN".parse::<NotNan<f32>>().is_err());
type Err = ParseNotNanError<<T as FromStr>::Err>
type Err = ParseNotNanError<<T as FromStr>::Err>The associated error which can be returned from parsing.
Multiplies a float directly.
Panics if the provided value is NaN or the computation results in NaN
pub fn mul_assign(&mut self, other: &NotNan<T>)
pub fn mul_assign(&mut self, other: &NotNan<T>)Performs the *= operation. Read more
pub fn mul_assign(&mut self, other: &T)
pub fn mul_assign(&mut self, other: &T)Performs the *= operation. Read more
pub fn mul_assign(&mut self, other: NotNan<T>)
pub fn mul_assign(&mut self, other: NotNan<T>)Performs the *= operation. Read more
pub fn mul_assign(&mut self, other: T)
pub fn mul_assign(&mut self, other: T)Performs the *= operation. Read more
type FromStrRadixErr = ParseNotNanError<<T as Num>::FromStrRadixErr>pub fn from_str_radix(
src: &str,
radix: u32
) -> Result<NotNan<T>, <NotNan<T> as Num>::FromStrRadixErr>
pub fn from_str_radix(
src: &str,
radix: u32
) -> Result<NotNan<T>, <NotNan<T> as Num>::FromStrRadixErr>Convert from a string and radix (typically 2..=36). Read more
pub fn from<F>(n: F) -> Option<NotNan<T>> where
F: ToPrimitive,
pub fn from<F>(n: F) -> Option<NotNan<T>> where
F: ToPrimitive, Creates a number from another value that can be converted into
a primitive via the ToPrimitive trait. If the source value cannot be
represented by the target type, then None is returned. Read more
impl<T> PartialOrd<NotNan<T>> for NotNan<T> where
T: PartialOrd<T>,
impl<T> PartialOrd<NotNan<T>> for NotNan<T> where
T: PartialOrd<T>, pub fn partial_cmp(&self, other: &NotNan<T>) -> Option<Ordering>
pub fn partial_cmp(&self, other: &NotNan<T>) -> Option<Ordering>This method returns an ordering between self and other values if one exists. Read more
This method tests less than (for self and other) and is used by the < operator. Read more
This method tests less than or equal to (for self and other) and is used by the <=
operator. Read more
This method tests greater than (for self and other) and is used by the > operator. Read more
Calculates % with a float directly.
Panics if the provided value is NaN or the computation results in NaN
pub fn rem_assign(&mut self, other: &NotNan<T>)
pub fn rem_assign(&mut self, other: &NotNan<T>)Performs the %= operation. Read more
pub fn rem_assign(&mut self, other: &T)
pub fn rem_assign(&mut self, other: &T)Performs the %= operation. Read more
pub fn rem_assign(&mut self, other: NotNan<T>)
pub fn rem_assign(&mut self, other: NotNan<T>)Performs the %= operation. Read more
pub fn rem_assign(&mut self, other: T)
pub fn rem_assign(&mut self, other: T)Performs the %= operation. Read more
The positive difference of two numbers. Read more
pub fn is_positive(&self) -> bool
pub fn is_positive(&self) -> boolReturns true if the number is positive and false if the number is zero or negative.
pub fn is_negative(&self) -> bool
pub fn is_negative(&self) -> boolReturns true if the number is negative and false if the number is zero or positive.
Subtracts a float directly.
Panics if the provided value is NaN or the computation results in NaN
pub fn sub_assign(&mut self, other: &NotNan<T>)
pub fn sub_assign(&mut self, other: &NotNan<T>)Performs the -= operation. Read more
pub fn sub_assign(&mut self, other: &T)
pub fn sub_assign(&mut self, other: &T)Performs the -= operation. Read more
pub fn sub_assign(&mut self, other: NotNan<T>)
pub fn sub_assign(&mut self, other: NotNan<T>)Performs the -= operation. Read more
pub fn sub_assign(&mut self, other: T)
pub fn sub_assign(&mut self, other: T)Performs the -= operation. Read more
Adds a float directly.
Panics if the provided value is NaN.
impl<T> ToPrimitive for NotNan<T> where
T: Float,
impl<T> ToPrimitive for NotNan<T> where
T: Float, Converts the value of self to an i64. If the value cannot be
represented by an i64, then None is returned. Read more
Converts the value of self to a u64. If the value cannot be
represented by a u64, then None is returned. Read more
Converts the value of self to an isize. If the value cannot be
represented by an isize, then None is returned. Read more
Converts the value of self to an i8. If the value cannot be
represented by an i8, then None is returned. Read more
Converts the value of self to an i16. If the value cannot be
represented by an i16, then None is returned. Read more
Converts the value of self to an i32. If the value cannot be
represented by an i32, then None is returned. Read more
Converts the value of self to a usize. If the value cannot be
represented by a usize, then None is returned. Read more
Converts the value of self to a u8. If the value cannot be
represented by a u8, then None is returned. Read more
Converts the value of self to a u16. If the value cannot be
represented by a u16, then None is returned. Read more
Converts the value of self to a u32. If the value cannot be
represented by a u32, then None is returned. Read more
Converts the value of 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. Read more
Converts the value of 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 more
Converts the value of self to an i128. If the value cannot be
represented by an i128 (i64 under the default implementation), then
None is returned. Read more
impl<T> StructuralPartialEq for NotNan<T>Auto Trait Implementations
impl<T> RefUnwindSafe for NotNan<T> where
T: RefUnwindSafe, impl<T> UnwindSafe for NotNan<T> where
T: UnwindSafe, Blanket Implementations
Mutably borrows from an owned value. Read more
pub fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>ⓘNotable traits for Box<R, Global>
impl<R> Read for Box<R, Global> where
R: Read + ?Sized, impl<W> Write for Box<W, Global> where
W: Write + ?Sized, impl<I, A> Iterator for Box<I, A> where
A: Allocator,
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<F, A> Future for Box<F, A> where
A: Allocator + 'static,
F: Future + Unpin + ?Sized, type Output = <F as Future>::Output;
pub fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>ⓘNotable traits for Box<R, Global>
impl<R> Read for Box<R, Global> where
R: Read + ?Sized, impl<W> Write for Box<W, Global> where
W: Write + ?Sized, impl<I, A> Iterator for Box<I, A> where
A: Allocator,
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<F, A> Future for Box<F, A> where
A: Allocator + 'static,
F: Future + Unpin + ?Sized, type Output = <F as Future>::Output;Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait. Read more
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait. Read more
Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s. Read more
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s. Read more
impl<A> DynCastExt for A
impl<A> DynCastExt for Apub fn dyn_cast<T>(
self
) -> Result<<A as DynCastExtHelper<T>>::Target, <A as DynCastExtHelper<T>>::Source> where
T: ?Sized,
A: DynCastExtHelper<T>,
pub fn dyn_cast<T>(
self
) -> Result<<A as DynCastExtHelper<T>>::Target, <A as DynCastExtHelper<T>>::Source> where
T: ?Sized,
A: DynCastExtHelper<T>, Use this to cast from one trait object type to another. Read more
pub fn dyn_upcast<T>(self) -> <A as DynCastExtAdvHelper<T, T>>::Target where
T: ?Sized,
A: DynCastExtAdvHelper<T, T, Source = <A as DynCastExtAdvHelper<T, T>>::Target>,
pub fn dyn_upcast<T>(self) -> <A as DynCastExtAdvHelper<T, T>>::Target where
T: ?Sized,
A: DynCastExtAdvHelper<T, T, Source = <A as DynCastExtAdvHelper<T, T>>::Target>, Use this to upcast a trait to one of its supertraits. Read more
pub fn dyn_cast_adv<F, T>(
self
) -> Result<<A as DynCastExtAdvHelper<F, T>>::Target, <A as DynCastExtAdvHelper<F, T>>::Source> where
T: ?Sized,
A: DynCastExtAdvHelper<F, T>,
F: ?Sized,
pub fn dyn_cast_adv<F, T>(
self
) -> Result<<A as DynCastExtAdvHelper<F, T>>::Target, <A as DynCastExtAdvHelper<F, T>>::Source> where
T: ?Sized,
A: DynCastExtAdvHelper<F, T>,
F: ?Sized, pub fn dyn_cast_with_config<C>(
self
) -> Result<<A as DynCastExtAdvHelper<<C as DynCastConfig>::Source, <C as DynCastConfig>::Target>>::Target, <A as DynCastExtAdvHelper<<C as DynCastConfig>::Source, <C as DynCastConfig>::Target>>::Source> where
C: DynCastConfig,
A: DynCastExtAdvHelper<<C as DynCastConfig>::Source, <C as DynCastConfig>::Target>,
pub fn dyn_cast_with_config<C>(
self
) -> Result<<A as DynCastExtAdvHelper<<C as DynCastConfig>::Source, <C as DynCastConfig>::Target>>::Target, <A as DynCastExtAdvHelper<<C as DynCastConfig>::Source, <C as DynCastConfig>::Target>>::Source> where
C: DynCastConfig,
A: DynCastExtAdvHelper<<C as DynCastConfig>::Source, <C as DynCastConfig>::Target>, Use this to cast from one trait object type to another. With this method the type parameter is a config type that uniquely specifies which cast should be preformed. Read more
Compare self to key and return true if they are equal.
fn instrument(self, span: Span) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>
impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;[src]
fn instrument(self, span: Span) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>
impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;[src]Instruments this type with the provided Span, returning an
Instrumented wrapper. Read more
fn in_current_span(self) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>
impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;[src]
fn in_current_span(self) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>
impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;[src]pub fn vzip(self) -> Vimpl<T, Rhs> NumAssignOps<Rhs> for T where
T: AddAssign<Rhs> + SubAssign<Rhs> + MulAssign<Rhs> + DivAssign<Rhs> + RemAssign<Rhs>, [src]impl<T, Rhs, Output> NumOps<Rhs, Output> for T where
T: Sub<Rhs, Output = Output> + Mul<Rhs, Output = Output> + Div<Rhs, Output = Output> + Add<Rhs, Output = Output> + Rem<Rhs, Output = Output>, [src]