Max

Trait Max 

Source
pub trait Max: PartialOrd + Sized {
    // Provided methods
    fn max<'a>(&'a self, other: &'a Self) -> &'a Self { ... }
    fn max_by_value(self, other: Self) -> Self { ... }
}
Expand description

A trait for finding the maximum of two values.

This trait provides a max method that returns a reference to the greater of two values. It is bounded by PartialOrd, which allows it to handle types with partial ordering.

§Implementations

  • For types that already guarantee validity, like RealValidated, the default implementation is sufficient and safe because PartialOrd is already correctly implemented.
  • A specialized implementation is provided for f64 to add validation checks in debug builds, ensuring inputs are finite and normal, and panicking if they are not.

§Behavior with NaN

For f64, if either input is NaN, the comparison self >= other is false, which means other will be returned. Note that in debug builds, providing a NaN input will cause a panic due to the validation checks. RealValidated types should not contain NaN values by contract.

Provided Methods§

Source

fn max<'a>(&'a self, other: &'a Self) -> &'a Self

Returns a reference to the maximum of self and other.

§Examples
use num_valid::functions::Max;

assert_eq!(Max::max(&5.0, &3.0), &5.0);
assert_eq!(Max::max(&-10.0, &-5.0), &-5.0);
Source

fn max_by_value(self, other: Self) -> Self

Returns the maximum of self and other, consuming both values.

§Examples
use num_valid::functions::Max;

assert_eq!(5.0f64.max_by_value(3.0), 5.0);
assert_eq!((-10.0f64).max_by_value(-5.0), -5.0);

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl Max for f64

Specialized implementation of Max and Min for `f64

Source§

fn max<'a>(&'a self, other: &'a Self) -> &'a Self

Source§

fn max_by_value(self, other: Self) -> Self

Implementors§