[][src]Trait acap::distance::Metric

pub trait Metric<T: ?Sized = Self>: Proximity<T> { }

Marker trait for metric spaces.

A metric must be symmetric and obey the triangle inequality. More precisely, let x, y, and z be any elements of a metric space, and let d(x, y) = x.distance(y).value(). Then the following rules must hold:

  • d(x, x) == 0,
  • d(x, y) == d(y, z) (symmetry), and
  • d(x, z) <= d(x, y) + d(y, z) (triangle inequality).

Those conditions also imply the following condition:

  • d(x, y) >= 0 (non-negativity)

Because we do not prohibit d(x, y) == 0 for distinct x and y, these spaces are more properly known as pseudometric spaces. This distinction is usually unimportant.

Implementations on Foreign Types

impl<'k, 'v, K: Metric<V>, V> Metric<&'v V> for &'k K[src]

Blanket Metric implementation for references.

Loading content...

Implementors

impl<T> Metric<Euclidean<T>> for Euclidean<T> where
    T: Coordinates,
    EuclideanDistance<T::Value>: Distance
[src]

Euclidean distance is a metric.

impl<T> Metric<Euclidean<T>> for T where
    T: Coordinates,
    EuclideanDistance<T::Value>: Distance
[src]

impl<T> Metric<T> for Euclidean<T> where
    T: Coordinates,
    EuclideanDistance<T::Value>: Distance
[src]

impl<T: Coordinates> Metric<Chebyshev<T>> for Chebyshev<T>[src]

Chebyshev distance is a metric.

impl<T: Coordinates> Metric<Chebyshev<T>> for T[src]

impl<T: Coordinates> Metric<Taxicab<T>> for Taxicab<T>[src]

Taxicab distance is a metric.

impl<T: Coordinates> Metric<Taxicab<T>> for T[src]

impl<T: Coordinates> Metric<T> for Chebyshev<T>[src]

impl<T: Coordinates> Metric<T> for Taxicab<T>[src]

impl<T: PrimInt> Metric<Hamming<T>> for Hamming<T>[src]

Hamming distance is a metric.

impl<T: PrimInt> Metric<T> for Hamming<T>[src]

impl<T: PrimInt> Metric<Hamming<T>> for T[src]

Loading content...