[][src]Struct rug::float::OrdFloat

#[repr(transparent)]pub struct OrdFloat { /* fields omitted */ }

A float that supports total ordering and hashing.

Negative zero is ordered as less than positive zero. Negative NaN is ordered as less than negative infinity, while positive NaN is ordered as greater than positive infinity. Comparing two negative NaNs or two positive NaNs produces equality.

Examples

use core::cmp::Ordering;
use rug::{
    float::{OrdFloat, Special},
    Float,
};

let pos_nan_f = Float::with_val(53, Special::Nan);
let pos_inf_f = Float::with_val(53, Special::Infinity);
let pos_zero_f = Float::with_val(53, Special::Zero);
let neg_zero_f = Float::with_val(53, Special::NegZero);
let neg_inf_f = Float::with_val(53, Special::NegInfinity);
let neg_nan_f = Float::with_val(53, -&pos_nan_f);
let pos_nan = OrdFloat::from(pos_nan_f);
let pos_inf = OrdFloat::from(pos_inf_f);
let pos_zero = OrdFloat::from(pos_zero_f);
let neg_zero = OrdFloat::from(neg_zero_f);
let neg_inf = OrdFloat::from(neg_inf_f);
let neg_nan = OrdFloat::from(neg_nan_f);

assert_eq!(pos_nan.cmp(&pos_nan), Ordering::Equal);
assert_eq!(neg_nan.cmp(&neg_nan), Ordering::Equal);
assert_eq!(neg_nan.cmp(&pos_nan), Ordering::Less);

assert_eq!(pos_nan.cmp(&pos_inf), Ordering::Greater);
assert_eq!(neg_nan.cmp(&neg_inf), Ordering::Less);

assert_eq!(pos_zero.cmp(&neg_zero), Ordering::Greater);

Implementations

impl OrdFloat[src]

pub fn as_float(&self) -> &Float[src]

Extracts the underlying Float.

The same result can be obtained using the implementation of AsRef<Float> which is provided for OrdFloat.

Examples

use rug::{float::OrdFloat, Float};
let f = Float::with_val(53, 1.5);
let ord = OrdFloat::from(f);
let f_ref = ord.as_float();
assert_eq!(f_ref.to_f64(), 1.5);

pub fn as_float_mut(&mut self) -> &mut Float[src]

Extracts the underlying Float.

The same result can be obtained using the implementation of AsMut<Float> which is provided for OrdFloat.

Examples

use rug::{float::OrdFloat, Float};
let f = Float::with_val(53, -1.5);
let mut ord = OrdFloat::from(f);
ord.as_float_mut().abs_mut();
assert_eq!(ord.as_float().to_f64(), 1.5);

Trait Implementations

impl AsMut<Float> for OrdFloat[src]

impl AsRef<Float> for OrdFloat[src]

impl AsRef<OrdFloat> for Float[src]

impl Clone for OrdFloat[src]

impl Debug for OrdFloat[src]

impl<'de> Deserialize<'de> for OrdFloat[src]

impl Eq for OrdFloat[src]

impl From<Float> for OrdFloat[src]

impl From<OrdFloat> for Float[src]

impl Hash for OrdFloat[src]

impl Ord for OrdFloat[src]

impl PartialEq<OrdFloat> for OrdFloat[src]

impl PartialOrd<OrdFloat> for OrdFloat[src]

impl Serialize for OrdFloat[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Az for T[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> CheckedAs for T[src]

impl<T> DeserializeOwned for T where
    T: for<'de> Deserialize<'de>, 
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> OverflowingAs for T[src]

impl<T> SaturatingAs for T[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> WrappingAs for T[src]