# Struct compare::Extract [−] [src]

```pub struct Extract<E, C> {
// some fields omitted
}```

A comparator that extracts a sort key from a value.

# Examples

```use compare::{Compare, Extract};
use std::cmp::Ordering::Greater;

let a = [1, 2, 3];
let b = [4, 5];

let cmp = Extract::new(|s: &[i32]| s.len());
assert_eq!(cmp.compare(&a, &b), Greater);```

## Methods

### `impl<E, K> Extract<E, Natural<K>> where K: Ord`[src]

#### `fn new<T: ?Sized>(ext: E) -> Self where E: Fn(&T) -> K`

Returns a comparator that extracts a sort key using `ext` and compares it according to its natural ordering.

### `impl<E, C> Extract<E, C>`[src]

#### `fn with_cmp<T: ?Sized, K>(ext: E, cmp: C) -> Self where E: Fn(&T) -> K, C: Compare<K>`

Returns a comparator that extracts a sort key using `ext` and compares it using `cmp`.

## Trait Implementations

### `impl<E, C, T: ?Sized, K> Compare<T> for Extract<E, C> where E: Fn(&T) -> K, C: Compare<K>`[src]

#### `fn compare(&self, l: &T, r: &T) -> Ordering`

Compares two values, returning `Less`, `Equal`, or `Greater` if `l` is less than, equal to, or greater than `r`, respectively. Read more

#### `fn compares_lt(&self, l: &T, r: &T) -> bool`

Checks if `l` is less than `r`.

#### `fn compares_le(&self, l: &T, r: &T) -> bool`

Checks if `l` is less than or equal to `r`.

#### `fn compares_ge(&self, l: &T, r: &T) -> bool`

Checks if `l` is greater than or equal to `r`.

#### `fn compares_gt(&self, l: &T, r: &T) -> bool`

Checks if `l` is greater than `r`.

#### `fn compares_eq(&self, l: &T, r: &T) -> bool`

Checks if `l` is equal to `r`.

#### `fn compares_ne(&self, l: &T, r: &T) -> bool`

Checks if `l` is not equal to `r`.

#### `fn borrowing(self) -> Borrowing<Self, L, R> where Self: Sized`

Borrows the comparator's parameters before comparing them. Read more

#### `fn rev(self) -> Rev<Self> where Self: Sized`

Reverses the ordering of the comparator. Read more

#### `fn swap(self) -> Swap<Self> where Self: Sized`

Swaps the comparator's parameters, maintaining the underlying ordering. Read more

#### `fn then<D>(self, then: D) -> Then<Self, D> where D: Compare<L, R>, Self: Sized`

Lexicographically combines the comparator with another. Read more

### `impl<E: PartialEq, C: PartialEq> PartialEq for Extract<E, C>`[src]

#### `fn eq(&self, __arg_0: &Extract<E, C>) -> bool`

This method tests for `self` and `other` values to be equal, and is used by `==`. Read more

#### `fn ne(&self, __arg_0: &Extract<E, C>) -> bool`

This method tests for `!=`.

### `impl<E: Default, C: Default> Default for Extract<E, C>`[src]

#### `fn default() -> Extract<E, C>`

Returns the "default value" for a type. Read more

### `impl<E: Debug, C: Debug> Debug for Extract<E, C>`[src]

#### `fn fmt(&self, __arg_0: &mut Formatter) -> Result`

Formats the value using the given formatter.

### `impl<E: Clone, C: Clone> Clone for Extract<E, C>`[src]

#### `fn clone(&self) -> Extract<E, C>`

Returns a copy of the value. Read more

#### `fn clone_from(&mut self, source: &Self)`1.0.0

Performs copy-assignment from `source`. Read more