FloatEqDebugUlpsDiff

Trait FloatEqDebugUlpsDiff 

Source
pub trait FloatEqDebugUlpsDiff {
    type DebugUlpsDiff;
}
Expand description

Per-field results of ULPs based diff calculations.

This trait establishes a one-to-one relation between an IEEE floating point type and a type whose fields are expected to be structurally identical but specified as the result of calculating a diff in ULPs. This is usually UlpsTol wrapped in an Option, since the ULPs diff between two floats is a partial function that returns None when the signs differ. It is used by testing and debugging tools to show the difference between two values on a per-field basis and is built for clarity, not runtime efficiency.

By convention, this type is named FooDebugUlpsDiff for a given type Foo.

The DebugUlpsDiff type alias exists to simplify usage, for example DebugUlpsDiff<f32> is Option<u32>.

To implement this trait over a new type, see How to compare custom types.

Required Associated Types§

Source

type DebugUlpsDiff

A structurally identical type to Self, with fields recursively wrapped by DebugUlpsDiff.

Implementations on Foreign Types§

Source§

impl FloatEqDebugUlpsDiff for f32

Source§

impl FloatEqDebugUlpsDiff for f64

Source§

impl FloatEqDebugUlpsDiff for ()

Source§

impl<A: FloatEqDebugUlpsDiff> FloatEqDebugUlpsDiff for (A,)

Source§

impl<A: FloatEqDebugUlpsDiff, B: FloatEqDebugUlpsDiff> FloatEqDebugUlpsDiff for (A, B)

Source§

impl<A: FloatEqDebugUlpsDiff, B: FloatEqDebugUlpsDiff, C: FloatEqDebugUlpsDiff> FloatEqDebugUlpsDiff for (A, B, C)

Source§

impl<A: FloatEqDebugUlpsDiff, B: FloatEqDebugUlpsDiff, C: FloatEqDebugUlpsDiff, D: FloatEqDebugUlpsDiff> FloatEqDebugUlpsDiff for (A, B, C, D)

Source§

impl<A: FloatEqDebugUlpsDiff, B: FloatEqDebugUlpsDiff, C: FloatEqDebugUlpsDiff, D: FloatEqDebugUlpsDiff, E: FloatEqDebugUlpsDiff> FloatEqDebugUlpsDiff for (A, B, C, D, E)

Source§

impl<A: FloatEqDebugUlpsDiff, B: FloatEqDebugUlpsDiff, C: FloatEqDebugUlpsDiff, D: FloatEqDebugUlpsDiff, E: FloatEqDebugUlpsDiff, F: FloatEqDebugUlpsDiff> FloatEqDebugUlpsDiff for (A, B, C, D, E, F)

Source§

impl<A: FloatEqDebugUlpsDiff, B: FloatEqDebugUlpsDiff, C: FloatEqDebugUlpsDiff, D: FloatEqDebugUlpsDiff, E: FloatEqDebugUlpsDiff, F: FloatEqDebugUlpsDiff, G: FloatEqDebugUlpsDiff> FloatEqDebugUlpsDiff for (A, B, C, D, E, F, G)

Source§

impl<A: FloatEqDebugUlpsDiff, B: FloatEqDebugUlpsDiff, C: FloatEqDebugUlpsDiff, D: FloatEqDebugUlpsDiff, E: FloatEqDebugUlpsDiff, F: FloatEqDebugUlpsDiff, G: FloatEqDebugUlpsDiff, H: FloatEqDebugUlpsDiff> FloatEqDebugUlpsDiff for (A, B, C, D, E, F, G, H)

Source§

impl<A: FloatEqDebugUlpsDiff, B: FloatEqDebugUlpsDiff, C: FloatEqDebugUlpsDiff, D: FloatEqDebugUlpsDiff, E: FloatEqDebugUlpsDiff, F: FloatEqDebugUlpsDiff, G: FloatEqDebugUlpsDiff, H: FloatEqDebugUlpsDiff, I: FloatEqDebugUlpsDiff> FloatEqDebugUlpsDiff for (A, B, C, D, E, F, G, H, I)

Source§

impl<A: FloatEqDebugUlpsDiff, B: FloatEqDebugUlpsDiff, C: FloatEqDebugUlpsDiff, D: FloatEqDebugUlpsDiff, E: FloatEqDebugUlpsDiff, F: FloatEqDebugUlpsDiff, G: FloatEqDebugUlpsDiff, H: FloatEqDebugUlpsDiff, I: FloatEqDebugUlpsDiff, J: FloatEqDebugUlpsDiff> FloatEqDebugUlpsDiff for (A, B, C, D, E, F, G, H, I, J)

Source§

impl<A: FloatEqDebugUlpsDiff, B: FloatEqDebugUlpsDiff, C: FloatEqDebugUlpsDiff, D: FloatEqDebugUlpsDiff, E: FloatEqDebugUlpsDiff, F: FloatEqDebugUlpsDiff, G: FloatEqDebugUlpsDiff, H: FloatEqDebugUlpsDiff, I: FloatEqDebugUlpsDiff, J: FloatEqDebugUlpsDiff, K: FloatEqDebugUlpsDiff> FloatEqDebugUlpsDiff for (A, B, C, D, E, F, G, H, I, J, K)

Source§

impl<A: FloatEqDebugUlpsDiff, B: FloatEqDebugUlpsDiff, C: FloatEqDebugUlpsDiff, D: FloatEqDebugUlpsDiff, E: FloatEqDebugUlpsDiff, F: FloatEqDebugUlpsDiff, G: FloatEqDebugUlpsDiff, H: FloatEqDebugUlpsDiff, I: FloatEqDebugUlpsDiff, J: FloatEqDebugUlpsDiff, K: FloatEqDebugUlpsDiff, L: FloatEqDebugUlpsDiff> FloatEqDebugUlpsDiff for (A, B, C, D, E, F, G, H, I, J, K, L)

Source§

impl<K, V> FloatEqDebugUlpsDiff for BTreeMap<K, V>

Source§

impl<K, V, S> FloatEqDebugUlpsDiff for HashMap<K, V, S>

Source§

impl<T: FloatEqDebugUlpsDiff> FloatEqDebugUlpsDiff for Option<T>

Source§

impl<T: FloatEqDebugUlpsDiff> FloatEqDebugUlpsDiff for LinkedList<T>

Source§

impl<T: FloatEqDebugUlpsDiff> FloatEqDebugUlpsDiff for VecDeque<T>

Source§

impl<T: FloatEqDebugUlpsDiff> FloatEqDebugUlpsDiff for Vec<T>

Source§

impl<T: FloatEqDebugUlpsDiff> FloatEqDebugUlpsDiff for Complex<T>

Source§

impl<T: FloatEqDebugUlpsDiff, const N: usize> FloatEqDebugUlpsDiff for [T; N]

Implementors§