Module deltae::eq

source ·
Expand description

Tolerance and DeltaEq traits

This module deals with comparing two colors by DeltaE within a certain Tolerance.

See also: assert_delta_eq

Implementing Tolerance and DeltaEq

use deltae::*;

struct MyTolerance(f32);

impl Tolerance for MyTolerance {
    fn tolerance(self) -> f32 {

#[derive(Copy, Clone)]
struct MyLab(f32, f32, f32);

// Types that implement Into<Lab> also implement the Delta trait
impl From<MyLab> for LabValue {
    fn from(mylab: MyLab) -> LabValue {
        LabValue {
            l: mylab.0,
            a: mylab.1,
            b: mylab.2,

impl<D: Delta + Copy> DeltaEq<D> for MyLab {}

let mylab = MyLab(89.73, 1.88, -6.96);
let lab = LabValue::new(89.73, 1.88, -6.96).unwrap();
let de2000 =, DEMethod::DE2000);
assert!(mylab.delta_eq(&lab, DE1976, 0.0));


  • Trait to determine whether two values are within a certain tolerance of DeltaE. Types that implement Into<LabValue> implicitly implement Delta. Types that implement Delta and Copy may also implement DeltaEq for other types that also implement Delta and Copy.
  • Trait to define a tolerance value for the DeltaEq trait