subtle

Trait ConstantTimeLess

Source
pub trait ConstantTimeLess: ConstantTimeEq + ConstantTimeGreater {
    // Provided method
    fn ct_lt(&self, other: &Self) -> Choice { ... }
}
Expand description

A type which can be compared in some manner and be determined to be less than another of the same type.

Provided Methods§

Source

fn ct_lt(&self, other: &Self) -> Choice

Determine whether self < other.

The bitwise-NOT of the return value of this function should be usable to determine if self >= other.

A default implementation is provided and implemented for the unsigned integer types.

This function should execute in constant time.

§Returns

A Choice with a set bit if self < other, and with no set bits otherwise.

§Example
use subtle::ConstantTimeLess;

let x: u8 = 13;
let y: u8 = 42;

let x_lt_y = x.ct_lt(&y);

assert_eq!(x_lt_y.unwrap_u8(), 1);

let y_lt_x = y.ct_lt(&x);

assert_eq!(y_lt_x.unwrap_u8(), 0);

let x_lt_x = x.ct_lt(&x);

assert_eq!(x_lt_x.unwrap_u8(), 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 ConstantTimeLess for Ordering

Source§

fn ct_lt(&self, other: &Self) -> Choice

Source§

impl ConstantTimeLess for u8

Source§

impl ConstantTimeLess for u16

Source§

impl ConstantTimeLess for u32

Source§

impl ConstantTimeLess for u64

Source§

impl ConstantTimeLess for u128

Implementors§