# Primitive Type tuple [−]

A finite heterogeneous sequence, `(T, U, ..)`.

Let's cover each of those in turn:

Tuples are finite. In other words, a tuple has a length. Here's a tuple of length `3`:

fn main() { ("hello", 5, 'c'); }

    ("hello", 5, 'c');

'Length' is also sometimes called 'arity' here; each tuple of a different length is a different, distinct type.

Tuples are heterogeneous. This means that each element of the tuple can have a different type. In that tuple above, it has the type:

fn main() { (&'static str, i32, char) }

    (&'static str, i32, char)

Tuples are a sequence. This means that they can be accessed by position; this is called 'tuple indexing', and it looks like this:

fn main() { let tuple = ("hello", 5, 'c'); assert_eq!(tuple.0, "hello"); assert_eq!(tuple.1, 5); assert_eq!(tuple.2, 'c'); }

    let tuple = ("hello", 5, 'c');

    assert_eq!(tuple.0, "hello");
    assert_eq!(tuple.1, 5);
    assert_eq!(tuple.2, 'c');

For more about tuples, see the book.

# Trait implementations

If every type inside a tuple implements one of the following traits, then a tuple itself also implements it.

- `Clone`
- `PartialEq`
- `Eq`
- `PartialOrd`
- `Ord`
- `Debug`
- `Default`
- `Hash`

Due to a temporary restriction in Rust's type system, these traits are only implemented on tuples of arity 32 or less. In the future, this may change.

# Examples

Basic usage:

fn main() { let tuple = ("hello", 5, 'c'); assert_eq!(tuple.0, "hello"); }

    let tuple = ("hello", 5, 'c');

    assert_eq!(tuple.0, "hello");

Tuples are often used as a return type when you want to return more than one value:

fn main() { fn calculate_point() -> (i32, i32) { // Don't do a calculation, that's not the point of the example (4, 5) } let point = calculate_point(); assert_eq!(point.0, 4); assert_eq!(point.1, 5); // Combining this with patterns can be nicer. let (x, y) = calculate_point(); assert_eq!(x, 4); assert_eq!(y, 5); }

    fn calculate_point() -> (i32, i32) {
        // Don't do a calculation, that's not the point of the example
        (4, 5)
    }

    let point = calculate_point();

    assert_eq!(point.0, 4);
    assert_eq!(point.1, 5);

    // Combining this with patterns can be nicer.

    let (x, y) = calculate_point();

    assert_eq!(x, 4);
    assert_eq!(y, 5);

## Trait Implementations

### `impl<A, B, C, D, E, F, G, H, I, J, K, L> Default for (A, B, C, D, E, F, G, H, I, J, K, L) where K: Default, F: Default, I: Default, A: Default, H: Default, G: Default, C: Default, D: Default, E: Default, J: Default, B: Default, L: Default` 1.0.0

#### `fn default() -> (A, B, C, D, E, F, G, H, I, J, K, L)`

### `impl<A, B, C, D, E, F, G, H, I, J, K, L> Ord for (A, B, C, D, E, F, G, H, I, J, K, L) where H: Ord, G: Ord, I: Ord, C: Ord, D: Ord, A: Ord, J: Ord, B: Ord, L: Ord, E: Ord, K: Ord, F: Ord` 1.0.0

#### `fn cmp(&self, other: &(A, B, C, D, E, F, G, H, I, J, K, L)) -> Ordering`

### `impl<A, B, C, D, E, F, G, H, I, J, K, L> PartialOrd<(A, B, C, D, E, F, G, H, I, J, K, L)> for (A, B, C, D, E, F, G, H, I, J, K, L) where D: PartialEq<D> + PartialOrd<D>, L: PartialEq<L> + PartialOrd<L>, F: PartialEq<F> + PartialOrd<F>, J: PartialEq<J> + PartialOrd<J>, K: PartialEq<K> + PartialOrd<K>, A: PartialEq<A> + PartialOrd<A>, C: PartialEq<C> + PartialOrd<C>, H: PartialEq<H> + PartialOrd<H>, I: PartialEq<I> + PartialOrd<I>, G: PartialEq<G> + PartialOrd<G>, B: PartialEq<B> + PartialOrd<B>, E: PartialEq<E> + PartialOrd<E>`1.0.0

#### `fn partial_cmp(&self, other: &(A, B, C, D, E, F, G, H, I, J, K, L)) -> Option<Ordering>`

#### `fn lt(&self, other: &(A, B, C, D, E, F, G, H, I, J, K, L)) -> bool`

#### `fn le(&self, other: &(A, B, C, D, E, F, G, H, I, J, K, L)) -> bool`

#### `fn ge(&self, other: &(A, B, C, D, E, F, G, H, I, J, K, L)) -> bool`

#### `fn gt(&self, other: &(A, B, C, D, E, F, G, H, I, J, K, L)) -> bool`

### `impl<A, B, C, D, E, F, G, H, I, J, K, L> Eq for (A, B, C, D, E, F, G, H, I, J, K, L) where G: Eq, J: Eq, F: Eq, K: Eq, A: Eq, L: Eq, H: Eq, D: Eq, B: Eq, E: Eq, I: Eq, C: Eq` 1.0.0

### `impl<A, B, C, D, E, F, G, H, I, J, K, L> PartialEq<(A, B, C, D, E, F, G, H, I, J, K, L)> for (A, B, C, D, E, F, G, H, I, J, K, L) where D: PartialEq<D>, F: PartialEq<F>, H: PartialEq<H>, C: PartialEq<C>, A: PartialEq<A>, B: PartialEq<B>, G: PartialEq<G>, K: PartialEq<K>, J: PartialEq<J>, L: PartialEq<L>, I: PartialEq<I>, E: PartialEq<E>`1.0.0

#### `fn eq(&self, other: &(A, B, C, D, E, F, G, H, I, J, K, L)) -> bool`

#### `fn ne(&self, other: &(A, B, C, D, E, F, G, H, I, J, K, L)) -> bool`

### `impl<A, B, C, D, E, F, G, H, I, J, K, L> Clone for (A, B, C, D, E, F, G, H, I, J, K, L) where I: Clone, C: Clone, L: Clone, E: Clone, A: Clone, F: Clone, J: Clone, D: Clone, G: Clone, H: Clone, B: Clone, K: Clone` 1.0.0

#### `fn clone(&self) -> (A, B, C, D, E, F, G, H, I, J, K, L)`

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

### `impl<A, B, C, D, E, F, G, H, I, J, K> Default for (A, B, C, D, E, F, G, H, I, J, K) where I: Default, J: Default, C: Default, K: Default, F: Default, A: Default, E: Default, D: Default, G: Default, B: Default, H: Default` 1.0.0

#### `fn default() -> (A, B, C, D, E, F, G, H, I, J, K)`

### `impl<A, B, C, D, E, F, G, H, I, J, K> Ord for (A, B, C, D, E, F, G, H, I, J, K) where A: Ord, I: Ord, H: Ord, K: Ord, B: Ord, C: Ord, G: Ord, E: Ord, D: Ord, F: Ord, J: Ord` 1.0.0

#### `fn cmp(&self, other: &(A, B, C, D, E, F, G, H, I, J, K)) -> Ordering`

### `impl<A, B, C, D, E, F, G, H, I, J, K> PartialOrd<(A, B, C, D, E, F, G, H, I, J, K)> for (A, B, C, D, E, F, G, H, I, J, K) where E: PartialEq<E> + PartialOrd<E>, B: PartialEq<B> + PartialOrd<B>, D: PartialEq<D> + PartialOrd<D>, G: PartialEq<G> + PartialOrd<G>, C: PartialEq<C> + PartialOrd<C>, K: PartialEq<K> + PartialOrd<K>, J: PartialEq<J> + PartialOrd<J>, I: PartialEq<I> + PartialOrd<I>, F: PartialEq<F> + PartialOrd<F>, A: PartialEq<A> + PartialOrd<A>, H: PartialEq<H> + PartialOrd<H>`1.0.0

#### `fn partial_cmp(&self, other: &(A, B, C, D, E, F, G, H, I, J, K)) -> Option<Ordering>`

#### `fn lt(&self, other: &(A, B, C, D, E, F, G, H, I, J, K)) -> bool`

#### `fn le(&self, other: &(A, B, C, D, E, F, G, H, I, J, K)) -> bool`

#### `fn ge(&self, other: &(A, B, C, D, E, F, G, H, I, J, K)) -> bool`

#### `fn gt(&self, other: &(A, B, C, D, E, F, G, H, I, J, K)) -> bool`

### `impl<A, B, C, D, E, F, G, H, I, J, K> Eq for (A, B, C, D, E, F, G, H, I, J, K) where F: Eq, A: Eq, C: Eq, I: Eq, B: Eq, E: Eq, J: Eq, K: Eq, G: Eq, H: Eq, D: Eq` 1.0.0

### `impl<A, B, C, D, E, F, G, H, I, J, K> PartialEq<(A, B, C, D, E, F, G, H, I, J, K)> for (A, B, C, D, E, F, G, H, I, J, K) where J: PartialEq<J>, I: PartialEq<I>, D: PartialEq<D>, C: PartialEq<C>, E: PartialEq<E>, G: PartialEq<G>, K: PartialEq<K>, A: PartialEq<A>, B: PartialEq<B>, F: PartialEq<F>, H: PartialEq<H>`1.0.0

#### `fn eq(&self, other: &(A, B, C, D, E, F, G, H, I, J, K)) -> bool`

#### `fn ne(&self, other: &(A, B, C, D, E, F, G, H, I, J, K)) -> bool`

### `impl<A, B, C, D, E, F, G, H, I, J, K> Clone for (A, B, C, D, E, F, G, H, I, J, K) where F: Clone, B: Clone, J: Clone, G: Clone, K: Clone, C: Clone, A: Clone, D: Clone, H: Clone, E: Clone, I: Clone` 1.0.0

#### `fn clone(&self) -> (A, B, C, D, E, F, G, H, I, J, K)`

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

### `impl<A, B, C, D, E, F, G, H, I, J> Default for (A, B, C, D, E, F, G, H, I, J) where C: Default, F: Default, J: Default, H: Default, E: Default, A: Default, I: Default, D: Default, G: Default, B: Default` 1.0.0

#### `fn default() -> (A, B, C, D, E, F, G, H, I, J)`

### `impl<A, B, C, D, E, F, G, H, I, J> Ord for (A, B, C, D, E, F, G, H, I, J) where E: Ord, G: Ord, D: Ord, F: Ord, B: Ord, I: Ord, J: Ord, A: Ord, C: Ord, H: Ord` 1.0.0

#### `fn cmp(&self, other: &(A, B, C, D, E, F, G, H, I, J)) -> Ordering`

### `impl<A, B, C, D, E, F, G, H, I, J> PartialOrd<(A, B, C, D, E, F, G, H, I, J)> for (A, B, C, D, E, F, G, H, I, J) where D: PartialEq<D> + PartialOrd<D>, A: PartialEq<A> + PartialOrd<A>, J: PartialEq<J> + PartialOrd<J>, E: PartialEq<E> + PartialOrd<E>, G: PartialEq<G> + PartialOrd<G>, C: PartialEq<C> + PartialOrd<C>, F: PartialEq<F> + PartialOrd<F>, H: PartialEq<H> + PartialOrd<H>, I: PartialEq<I> + PartialOrd<I>, B: PartialEq<B> + PartialOrd<B>`1.0.0

#### `fn partial_cmp(&self, other: &(A, B, C, D, E, F, G, H, I, J)) -> Option<Ordering>`

#### `fn lt(&self, other: &(A, B, C, D, E, F, G, H, I, J)) -> bool`

#### `fn le(&self, other: &(A, B, C, D, E, F, G, H, I, J)) -> bool`

#### `fn ge(&self, other: &(A, B, C, D, E, F, G, H, I, J)) -> bool`

#### `fn gt(&self, other: &(A, B, C, D, E, F, G, H, I, J)) -> bool`

### `impl<A, B, C, D, E, F, G, H, I, J> Eq for (A, B, C, D, E, F, G, H, I, J) where D: Eq, I: Eq, G: Eq, C: Eq, A: Eq, B: Eq, H: Eq, F: Eq, E: Eq, J: Eq` 1.0.0

### `impl<A, B, C, D, E, F, G, H, I, J> PartialEq<(A, B, C, D, E, F, G, H, I, J)> for (A, B, C, D, E, F, G, H, I, J) where C: PartialEq<C>, I: PartialEq<I>, E: PartialEq<E>, D: PartialEq<D>, F: PartialEq<F>, H: PartialEq<H>, B: PartialEq<B>, G: PartialEq<G>, J: PartialEq<J>, A: PartialEq<A>`1.0.0

#### `fn eq(&self, other: &(A, B, C, D, E, F, G, H, I, J)) -> bool`

#### `fn ne(&self, other: &(A, B, C, D, E, F, G, H, I, J)) -> bool`

### `impl<A, B, C, D, E, F, G, H, I, J> Clone for (A, B, C, D, E, F, G, H, I, J) where G: Clone, B: Clone, D: Clone, H: Clone, C: Clone, E: Clone, J: Clone, F: Clone, A: Clone, I: Clone` 1.0.0

#### `fn clone(&self) -> (A, B, C, D, E, F, G, H, I, J)`

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

### `impl<A, B, C, D, E, F, G, H, I> Default for (A, B, C, D, E, F, G, H, I) where I: Default, A: Default, E: Default, G: Default, F: Default, H: Default, C: Default, D: Default, B: Default` 1.0.0

#### `fn default() -> (A, B, C, D, E, F, G, H, I)`

### `impl<A, B, C, D, E, F, G, H, I> Ord for (A, B, C, D, E, F, G, H, I) where D: Ord, G: Ord, E: Ord, B: Ord, A: Ord, F: Ord, H: Ord, I: Ord, C: Ord` 1.0.0

#### `fn cmp(&self, other: &(A, B, C, D, E, F, G, H, I)) -> Ordering`

### `impl<A, B, C, D, E, F, G, H, I> PartialOrd<(A, B, C, D, E, F, G, H, I)> for (A, B, C, D, E, F, G, H, I) where E: PartialEq<E> + PartialOrd<E>, I: PartialEq<I> + PartialOrd<I>, C: PartialEq<C> + PartialOrd<C>, F: PartialEq<F> + PartialOrd<F>, G: PartialEq<G> + PartialOrd<G>, B: PartialEq<B> + PartialOrd<B>, A: PartialEq<A> + PartialOrd<A>, H: PartialEq<H> + PartialOrd<H>, D: PartialEq<D> + PartialOrd<D>`1.0.0

#### `fn partial_cmp(&self, other: &(A, B, C, D, E, F, G, H, I)) -> Option<Ordering>`

#### `fn lt(&self, other: &(A, B, C, D, E, F, G, H, I)) -> bool`

#### `fn le(&self, other: &(A, B, C, D, E, F, G, H, I)) -> bool`

#### `fn ge(&self, other: &(A, B, C, D, E, F, G, H, I)) -> bool`

#### `fn gt(&self, other: &(A, B, C, D, E, F, G, H, I)) -> bool`

### `impl<A, B, C, D, E, F, G, H, I> Eq for (A, B, C, D, E, F, G, H, I) where A: Eq, E: Eq, D: Eq, G: Eq, H: Eq, I: Eq, F: Eq, C: Eq, B: Eq` 1.0.0

### `impl<A, B, C, D, E, F, G, H, I> PartialEq<(A, B, C, D, E, F, G, H, I)> for (A, B, C, D, E, F, G, H, I) where A: PartialEq<A>, B: PartialEq<B>, C: PartialEq<C>, G: PartialEq<G>, E: PartialEq<E>, F: PartialEq<F>, D: PartialEq<D>, H: PartialEq<H>, I: PartialEq<I>`1.0.0

#### `fn eq(&self, other: &(A, B, C, D, E, F, G, H, I)) -> bool`

#### `fn ne(&self, other: &(A, B, C, D, E, F, G, H, I)) -> bool`

### `impl<A, B, C, D, E, F, G, H, I> Clone for (A, B, C, D, E, F, G, H, I) where F: Clone, A: Clone, E: Clone, C: Clone, B: Clone, I: Clone, D: Clone, H: Clone, G: Clone` 1.0.0

#### `fn clone(&self) -> (A, B, C, D, E, F, G, H, I)`

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

### `impl<A, B, C, D, E, F, G, H> Default for (A, B, C, D, E, F, G, H) where A: Default, B: Default, C: Default, H: Default, F: Default, E: Default, G: Default, D: Default` 1.0.0

#### `fn default() -> (A, B, C, D, E, F, G, H)`

### `impl<A, B, C, D, E, F, G, H> Ord for (A, B, C, D, E, F, G, H) where A: Ord, H: Ord, F: Ord, C: Ord, D: Ord, B: Ord, G: Ord, E: Ord` 1.0.0

#### `fn cmp(&self, other: &(A, B, C, D, E, F, G, H)) -> Ordering`

### `impl<A, B, C, D, E, F, G, H> PartialOrd<(A, B, C, D, E, F, G, H)> for (A, B, C, D, E, F, G, H) where C: PartialEq<C> + PartialOrd<C>, E: PartialEq<E> + PartialOrd<E>, D: PartialEq<D> + PartialOrd<D>, F: PartialEq<F> + PartialOrd<F>, A: PartialEq<A> + PartialOrd<A>, H: PartialEq<H> + PartialOrd<H>, B: PartialEq<B> + PartialOrd<B>, G: PartialEq<G> + PartialOrd<G>`1.0.0

#### `fn partial_cmp(&self, other: &(A, B, C, D, E, F, G, H)) -> Option<Ordering>`

#### `fn lt(&self, other: &(A, B, C, D, E, F, G, H)) -> bool`

#### `fn le(&self, other: &(A, B, C, D, E, F, G, H)) -> bool`

#### `fn ge(&self, other: &(A, B, C, D, E, F, G, H)) -> bool`

#### `fn gt(&self, other: &(A, B, C, D, E, F, G, H)) -> bool`

### `impl<A, B, C, D, E, F, G, H> Eq for (A, B, C, D, E, F, G, H) where E: Eq, F: Eq, A: Eq, C: Eq, H: Eq, G: Eq, B: Eq, D: Eq` 1.0.0

### `impl<A, B, C, D, E, F, G, H> PartialEq<(A, B, C, D, E, F, G, H)> for (A, B, C, D, E, F, G, H) where C: PartialEq<C>, A: PartialEq<A>, G: PartialEq<G>, D: PartialEq<D>, B: PartialEq<B>, F: PartialEq<F>, H: PartialEq<H>, E: PartialEq<E>`1.0.0

#### `fn eq(&self, other: &(A, B, C, D, E, F, G, H)) -> bool`

#### `fn ne(&self, other: &(A, B, C, D, E, F, G, H)) -> bool`

### `impl<A, B, C, D, E, F, G, H> Clone for (A, B, C, D, E, F, G, H) where D: Clone, F: Clone, B: Clone, G: Clone, C: Clone, E: Clone, A: Clone, H: Clone` 1.0.0

#### `fn clone(&self) -> (A, B, C, D, E, F, G, H)`

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

### `impl<A, B, C, D, E, F, G> Default for (A, B, C, D, E, F, G) where D: Default, F: Default, C: Default, G: Default, A: Default, E: Default, B: Default` 1.0.0

#### `fn default() -> (A, B, C, D, E, F, G)`

### `impl<A, B, C, D, E, F, G> Ord for (A, B, C, D, E, F, G) where B: Ord, G: Ord, E: Ord, F: Ord, D: Ord, A: Ord, C: Ord` 1.0.0

#### `fn cmp(&self, other: &(A, B, C, D, E, F, G)) -> Ordering`

### `impl<A, B, C, D, E, F, G> PartialOrd<(A, B, C, D, E, F, G)> for (A, B, C, D, E, F, G) where E: PartialEq<E> + PartialOrd<E>, C: PartialEq<C> + PartialOrd<C>, A: PartialEq<A> + PartialOrd<A>, B: PartialEq<B> + PartialOrd<B>, D: PartialEq<D> + PartialOrd<D>, F: PartialEq<F> + PartialOrd<F>, G: PartialEq<G> + PartialOrd<G>`1.0.0

#### `fn partial_cmp(&self, other: &(A, B, C, D, E, F, G)) -> Option<Ordering>`

#### `fn lt(&self, other: &(A, B, C, D, E, F, G)) -> bool`

#### `fn le(&self, other: &(A, B, C, D, E, F, G)) -> bool`

#### `fn ge(&self, other: &(A, B, C, D, E, F, G)) -> bool`

#### `fn gt(&self, other: &(A, B, C, D, E, F, G)) -> bool`

### `impl<A, B, C, D, E, F, G> Eq for (A, B, C, D, E, F, G) where E: Eq, C: Eq, A: Eq, G: Eq, D: Eq, F: Eq, B: Eq` 1.0.0

### `impl<A, B, C, D, E, F, G> PartialEq<(A, B, C, D, E, F, G)> for (A, B, C, D, E, F, G) where G: PartialEq<G>, D: PartialEq<D>, C: PartialEq<C>, E: PartialEq<E>, B: PartialEq<B>, A: PartialEq<A>, F: PartialEq<F>`1.0.0

#### `fn eq(&self, other: &(A, B, C, D, E, F, G)) -> bool`

#### `fn ne(&self, other: &(A, B, C, D, E, F, G)) -> bool`

### `impl<A, B, C, D, E, F, G> Clone for (A, B, C, D, E, F, G) where D: Clone, E: Clone, A: Clone, C: Clone, B: Clone, G: Clone, F: Clone` 1.0.0

#### `fn clone(&self) -> (A, B, C, D, E, F, G)`

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

### `impl<A, B, C, D, E, F> Default for (A, B, C, D, E, F) where A: Default, E: Default, D: Default, F: Default, C: Default, B: Default` 1.0.0

#### `fn default() -> (A, B, C, D, E, F)`

### `impl<A, B, C, D, E, F> Ord for (A, B, C, D, E, F) where F: Ord, A: Ord, E: Ord, C: Ord, B: Ord, D: Ord` 1.0.0

#### `fn cmp(&self, other: &(A, B, C, D, E, F)) -> Ordering`

### `impl<A, B, C, D, E, F> PartialOrd<(A, B, C, D, E, F)> for (A, B, C, D, E, F) where F: PartialEq<F> + PartialOrd<F>, E: PartialEq<E> + PartialOrd<E>, D: PartialEq<D> + PartialOrd<D>, C: PartialEq<C> + PartialOrd<C>, A: PartialEq<A> + PartialOrd<A>, B: PartialEq<B> + PartialOrd<B>`1.0.0

#### `fn partial_cmp(&self, other: &(A, B, C, D, E, F)) -> Option<Ordering>`

#### `fn lt(&self, other: &(A, B, C, D, E, F)) -> bool`

#### `fn le(&self, other: &(A, B, C, D, E, F)) -> bool`

#### `fn ge(&self, other: &(A, B, C, D, E, F)) -> bool`

#### `fn gt(&self, other: &(A, B, C, D, E, F)) -> bool`

### `impl<A, B, C, D, E, F> Eq for (A, B, C, D, E, F) where D: Eq, A: Eq, C: Eq, B: Eq, F: Eq, E: Eq` 1.0.0

### `impl<A, B, C, D, E, F> PartialEq<(A, B, C, D, E, F)> for (A, B, C, D, E, F) where D: PartialEq<D>, C: PartialEq<C>, E: PartialEq<E>, F: PartialEq<F>, A: PartialEq<A>, B: PartialEq<B>`1.0.0

#### `fn eq(&self, other: &(A, B, C, D, E, F)) -> bool`

#### `fn ne(&self, other: &(A, B, C, D, E, F)) -> bool`

### `impl<A, B, C, D, E, F> Clone for (A, B, C, D, E, F) where D: Clone, E: Clone, A: Clone, B: Clone, C: Clone, F: Clone` 1.0.0

#### `fn clone(&self) -> (A, B, C, D, E, F)`

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

### `impl<A, B, C, D, E> Default for (A, B, C, D, E) where D: Default, E: Default, A: Default, C: Default, B: Default` 1.0.0

#### `fn default() -> (A, B, C, D, E)`

### `impl<A, B, C, D, E> Ord for (A, B, C, D, E) where E: Ord, C: Ord, A: Ord, B: Ord, D: Ord` 1.0.0

#### `fn cmp(&self, other: &(A, B, C, D, E)) -> Ordering`

### `impl<A, B, C, D, E> PartialOrd<(A, B, C, D, E)> for (A, B, C, D, E) where A: PartialEq<A> + PartialOrd<A>, E: PartialEq<E> + PartialOrd<E>, B: PartialEq<B> + PartialOrd<B>, C: PartialEq<C> + PartialOrd<C>, D: PartialEq<D> + PartialOrd<D>`1.0.0

#### `fn partial_cmp(&self, other: &(A, B, C, D, E)) -> Option<Ordering>`

#### `fn lt(&self, other: &(A, B, C, D, E)) -> bool`

#### `fn le(&self, other: &(A, B, C, D, E)) -> bool`

#### `fn ge(&self, other: &(A, B, C, D, E)) -> bool`

#### `fn gt(&self, other: &(A, B, C, D, E)) -> bool`

### `impl<A, B, C, D, E> Eq for (A, B, C, D, E) where B: Eq, E: Eq, A: Eq, C: Eq, D: Eq` 1.0.0

### `impl<A, B, C, D, E> PartialEq<(A, B, C, D, E)> for (A, B, C, D, E) where D: PartialEq<D>, E: PartialEq<E>, B: PartialEq<B>, A: PartialEq<A>, C: PartialEq<C>`1.0.0

#### `fn eq(&self, other: &(A, B, C, D, E)) -> bool`

#### `fn ne(&self, other: &(A, B, C, D, E)) -> bool`

### `impl<A, B, C, D, E> Clone for (A, B, C, D, E) where D: Clone, B: Clone, C: Clone, E: Clone, A: Clone` 1.0.0

#### `fn clone(&self) -> (A, B, C, D, E)`

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

### `impl<A, B, C, D> Default for (A, B, C, D) where C: Default, B: Default, D: Default, A: Default` 1.0.0

#### `fn default() -> (A, B, C, D)`

### `impl<A, B, C, D> Ord for (A, B, C, D) where A: Ord, C: Ord, D: Ord, B: Ord` 1.0.0

#### `fn cmp(&self, other: &(A, B, C, D)) -> Ordering`

### `impl<A, B, C, D> PartialOrd<(A, B, C, D)> for (A, B, C, D) where C: PartialEq<C> + PartialOrd<C>, D: PartialEq<D> + PartialOrd<D>, A: PartialEq<A> + PartialOrd<A>, B: PartialEq<B> + PartialOrd<B>`1.0.0

#### `fn partial_cmp(&self, other: &(A, B, C, D)) -> Option<Ordering>`

#### `fn lt(&self, other: &(A, B, C, D)) -> bool`

#### `fn le(&self, other: &(A, B, C, D)) -> bool`

#### `fn ge(&self, other: &(A, B, C, D)) -> bool`

#### `fn gt(&self, other: &(A, B, C, D)) -> bool`

### `impl<A, B, C, D> Eq for (A, B, C, D) where A: Eq, C: Eq, B: Eq, D: Eq` 1.0.0

### `impl<A, B, C, D> PartialEq<(A, B, C, D)> for (A, B, C, D) where A: PartialEq<A>, B: PartialEq<B>, C: PartialEq<C>, D: PartialEq<D>`1.0.0

#### `fn eq(&self, other: &(A, B, C, D)) -> bool`

#### `fn ne(&self, other: &(A, B, C, D)) -> bool`

### `impl<A, B, C, D> Clone for (A, B, C, D) where A: Clone, C: Clone, D: Clone, B: Clone` 1.0.0

#### `fn clone(&self) -> (A, B, C, D)`

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

### `impl<A, B, C> Default for (A, B, C) where B: Default, C: Default, A: Default` 1.0.0

#### `fn default() -> (A, B, C)`

### `impl<A, B, C> Ord for (A, B, C) where C: Ord, B: Ord, A: Ord` 1.0.0

#### `fn cmp(&self, other: &(A, B, C)) -> Ordering`

### `impl<A, B, C> PartialOrd<(A, B, C)> for (A, B, C) where C: PartialEq<C> + PartialOrd<C>, A: PartialEq<A> + PartialOrd<A>, B: PartialEq<B> + PartialOrd<B>`1.0.0

#### `fn partial_cmp(&self, other: &(A, B, C)) -> Option<Ordering>`

#### `fn lt(&self, other: &(A, B, C)) -> bool`

#### `fn le(&self, other: &(A, B, C)) -> bool`

#### `fn ge(&self, other: &(A, B, C)) -> bool`

#### `fn gt(&self, other: &(A, B, C)) -> bool`

### `impl<A, B, C> Eq for (A, B, C) where C: Eq, A: Eq, B: Eq` 1.0.0

### `impl<A, B, C> PartialEq<(A, B, C)> for (A, B, C) where C: PartialEq<C>, B: PartialEq<B>, A: PartialEq<A>`1.0.0

#### `fn eq(&self, other: &(A, B, C)) -> bool`

#### `fn ne(&self, other: &(A, B, C)) -> bool`

### `impl<A, B, C> Clone for (A, B, C) where C: Clone, A: Clone, B: Clone` 1.0.0

#### `fn clone(&self) -> (A, B, C)`

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

### `impl<A, B> Default for (A, B) where A: Default, B: Default` 1.0.0

#### `fn default() -> (A, B)`

### `impl<A, B> Ord for (A, B) where A: Ord, B: Ord` 1.0.0

#### `fn cmp(&self, other: &(A, B)) -> Ordering`

### `impl<A, B> PartialOrd<(A, B)> for (A, B) where A: PartialEq<A> + PartialOrd<A>, B: PartialEq<B> + PartialOrd<B>`1.0.0

#### `fn partial_cmp(&self, other: &(A, B)) -> Option<Ordering>`

#### `fn lt(&self, other: &(A, B)) -> bool`

#### `fn le(&self, other: &(A, B)) -> bool`

#### `fn ge(&self, other: &(A, B)) -> bool`

#### `fn gt(&self, other: &(A, B)) -> bool`

### `impl<A, B> Eq for (A, B) where B: Eq, A: Eq` 1.0.0

### `impl<A, B> PartialEq<(A, B)> for (A, B) where A: PartialEq<A>, B: PartialEq<B>`1.0.0

#### `fn eq(&self, other: &(A, B)) -> bool`

#### `fn ne(&self, other: &(A, B)) -> bool`

### `impl<A, B> Clone for (A, B) where A: Clone, B: Clone` 1.0.0

#### `fn clone(&self) -> (A, B)`

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

### `impl<A> Default for (A,) where A: Default` 1.0.0

#### `fn default() -> (A,)`

### `impl<A> Ord for (A,) where A: Ord` 1.0.0

#### `fn cmp(&self, other: &(A,)) -> Ordering`

### `impl<A> PartialOrd<(A,)> for (A,) where A: PartialEq<A> + PartialOrd<A>`1.0.0

#### `fn partial_cmp(&self, other: &(A,)) -> Option<Ordering>`

#### `fn lt(&self, other: &(A,)) -> bool`

#### `fn le(&self, other: &(A,)) -> bool`

#### `fn ge(&self, other: &(A,)) -> bool`

#### `fn gt(&self, other: &(A,)) -> bool`

### `impl<A> Eq for (A,) where A: Eq` 1.0.0

### `impl<A> PartialEq<(A,)> for (A,) where A: PartialEq<A>`1.0.0

#### `fn eq(&self, other: &(A,)) -> bool`

#### `fn ne(&self, other: &(A,)) -> bool`

### `impl<A> Clone for (A,) where A: Clone` 1.0.0

#### `fn clone(&self) -> (A,)`

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

### `impl Debug for ()`1.0.0

#### `fn fmt(&self, f: &mut Formatter) -> Result<(), Error>`

### `impl<T11> Debug for (T11,) where T11: Debug` 1.0.0

#### `fn fmt(&self, f: &mut Formatter) -> Result<(), Error>`

### `impl<T10, T11> Debug for (T10, T11) where T10: Debug, T11: Debug` 1.0.0

#### `fn fmt(&self, f: &mut Formatter) -> Result<(), Error>`

### `impl<T9, T10, T11> Debug for (T9, T10, T11) where T9: Debug, T11: Debug, T10: Debug` 1.0.0

#### `fn fmt(&self, f: &mut Formatter) -> Result<(), Error>`

### `impl<T8, T9, T10, T11> Debug for (T8, T9, T10, T11) where T10: Debug, T8: Debug, T11: Debug, T9: Debug` 1.0.0

#### `fn fmt(&self, f: &mut Formatter) -> Result<(), Error>`

### `impl<T7, T8, T9, T10, T11> Debug for (T7, T8, T9, T10, T11) where T7: Debug, T10: Debug, T8: Debug, T9: Debug, T11: Debug` 1.0.0

#### `fn fmt(&self, f: &mut Formatter) -> Result<(), Error>`

### `impl<T6, T7, T8, T9, T10, T11> Debug for (T6, T7, T8, T9, T10, T11) where T8: Debug, T11: Debug, T7: Debug, T6: Debug, T9: Debug, T10: Debug` 1.0.0

#### `fn fmt(&self, f: &mut Formatter) -> Result<(), Error>`

### `impl<T5, T6, T7, T8, T9, T10, T11> Debug for (T5, T6, T7, T8, T9, T10, T11) where T10: Debug, T9: Debug, T6: Debug, T7: Debug, T8: Debug, T5: Debug, T11: Debug` 1.0.0

#### `fn fmt(&self, f: &mut Formatter) -> Result<(), Error>`

### `impl<T4, T5, T6, T7, T8, T9, T10, T11> Debug for (T4, T5, T6, T7, T8, T9, T10, T11) where T9: Debug, T5: Debug, T10: Debug, T11: Debug, T7: Debug, T6: Debug, T4: Debug, T8: Debug` 1.0.0

#### `fn fmt(&self, f: &mut Formatter) -> Result<(), Error>`

### `impl<T3, T4, T5, T6, T7, T8, T9, T10, T11> Debug for (T3, T4, T5, T6, T7, T8, T9, T10, T11) where T9: Debug, T10: Debug, T5: Debug, T4: Debug, T11: Debug, T8: Debug, T6: Debug, T7: Debug, T3: Debug` 1.0.0

#### `fn fmt(&self, f: &mut Formatter) -> Result<(), Error>`

### `impl<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Debug for (T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) where T6: Debug, T9: Debug, T3: Debug, T10: Debug, T2: Debug, T11: Debug, T4: Debug, T5: Debug, T8: Debug, T7: Debug` 1.0.0

#### `fn fmt(&self, f: &mut Formatter) -> Result<(), Error>`

### `impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Debug for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) where T2: Debug, T10: Debug, T9: Debug, T3: Debug, T8: Debug, T5: Debug, T7: Debug, T4: Debug, T6: Debug, T1: Debug, T11: Debug` 1.0.0

#### `fn fmt(&self, f: &mut Formatter) -> Result<(), Error>`

### `impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Debug for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) where T1: Debug, T3: Debug, T10: Debug, T4: Debug, T11: Debug, T2: Debug, T6: Debug, T7: Debug, T9: Debug, T0: Debug, T8: Debug, T5: Debug` 1.0.0

#### `fn fmt(&self, f: &mut Formatter) -> Result<(), Error>`

### `impl<A, B, C, D, E, F, G, H, I, J, K, L> Hash for (A, B, C, D, E, F, G, H, I, J, K, L) where H: Hash, B: Hash, K: Hash, C: Hash, G: Hash, A: Hash, E: Hash, D: Hash, F: Hash, J: Hash, L: Hash, I: Hash` 1.0.0

#### `fn hash<S>(&self, state: &mut S) where S: Hasher`

#### 1.3.0 `fn hash_slice<H>(data: &[Self], state: &mut H) where H: Hasher`

### `impl<A, B, C, D, E, F, G, H, I, J, K> Hash for (A, B, C, D, E, F, G, H, I, J, K) where B: Hash, I: Hash, K: Hash, G: Hash, D: Hash, A: Hash, F: Hash, H: Hash, E: Hash, C: Hash, J: Hash` 1.0.0

#### `fn hash<S>(&self, state: &mut S) where S: Hasher`

#### 1.3.0 `fn hash_slice<H>(data: &[Self], state: &mut H) where H: Hasher`

### `impl<A, B, C, D, E, F, G, H, I, J> Hash for (A, B, C, D, E, F, G, H, I, J) where B: Hash, J: Hash, E: Hash, H: Hash, F: Hash, D: Hash, I: Hash, A: Hash, G: Hash, C: Hash` 1.0.0

#### `fn hash<S>(&self, state: &mut S) where S: Hasher`

#### 1.3.0 `fn hash_slice<H>(data: &[Self], state: &mut H) where H: Hasher`

### `impl<A, B, C, D, E, F, G, H, I> Hash for (A, B, C, D, E, F, G, H, I) where E: Hash, G: Hash, B: Hash, D: Hash, H: Hash, F: Hash, A: Hash, I: Hash, C: Hash` 1.0.0

#### `fn hash<S>(&self, state: &mut S) where S: Hasher`

#### 1.3.0 `fn hash_slice<H>(data: &[Self], state: &mut H) where H: Hasher`

### `impl<A, B, C, D, E, F, G, H> Hash for (A, B, C, D, E, F, G, H) where C: Hash, A: Hash, B: Hash, F: Hash, G: Hash, D: Hash, H: Hash, E: Hash` 1.0.0

#### `fn hash<S>(&self, state: &mut S) where S: Hasher`

#### 1.3.0 `fn hash_slice<H>(data: &[Self], state: &mut H) where H: Hasher`

### `impl<A, B, C, D, E, F, G> Hash for (A, B, C, D, E, F, G) where F: Hash, A: Hash, D: Hash, G: Hash, C: Hash, E: Hash, B: Hash` 1.0.0

#### `fn hash<S>(&self, state: &mut S) where S: Hasher`

#### 1.3.0 `fn hash_slice<H>(data: &[Self], state: &mut H) where H: Hasher`

### `impl<A, B, C, D, E, F> Hash for (A, B, C, D, E, F) where A: Hash, E: Hash, B: Hash, F: Hash, C: Hash, D: Hash` 1.0.0

#### `fn hash<S>(&self, state: &mut S) where S: Hasher`

#### 1.3.0 `fn hash_slice<H>(data: &[Self], state: &mut H) where H: Hasher`

### `impl<A, B, C, D, E> Hash for (A, B, C, D, E) where D: Hash, C: Hash, A: Hash, B: Hash, E: Hash` 1.0.0

#### `fn hash<S>(&self, state: &mut S) where S: Hasher`

#### 1.3.0 `fn hash_slice<H>(data: &[Self], state: &mut H) where H: Hasher`

### `impl<A, B, C, D> Hash for (A, B, C, D) where C: Hash, A: Hash, B: Hash, D: Hash` 1.0.0

#### `fn hash<S>(&self, state: &mut S) where S: Hasher`

#### 1.3.0 `fn hash_slice<H>(data: &[Self], state: &mut H) where H: Hasher`

### `impl<A, B, C> Hash for (A, B, C) where C: Hash, A: Hash, B: Hash` 1.0.0

#### `fn hash<S>(&self, state: &mut S) where S: Hasher`

#### 1.3.0 `fn hash_slice<H>(data: &[Self], state: &mut H) where H: Hasher`

### `impl<A, B> Hash for (A, B) where A: Hash, B: Hash` 1.0.0

#### `fn hash<S>(&self, state: &mut S) where S: Hasher`

#### 1.3.0 `fn hash_slice<H>(data: &[Self], state: &mut H) where H: Hasher`

### `impl<A> Hash for (A,) where A: Hash` 1.0.0

#### `fn hash<S>(&self, state: &mut S) where S: Hasher`

#### 1.3.0 `fn hash_slice<H>(data: &[Self], state: &mut H) where H: Hasher`

### `impl Hash for ()`1.0.0

#### `fn hash<H>(&self, _state: &mut H) where H: Hasher`

#### 1.3.0 `fn hash_slice<H>(data: &[Self], state: &mut H) where H: Hasher`

### `impl Default for ()`1.0.0

#### `fn default()`

### `impl Clone for ()`1.0.0

#### `fn clone(&self)`

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

### `impl Ord for ()`1.0.0

#### `fn cmp(&self, _other: &()) -> Ordering`

### `impl PartialOrd<()> for ()`1.0.0

#### `fn partial_cmp(&self, &()) -> Option<Ordering>`

#### 1.0.0 `fn lt(&self, other: &Rhs) -> bool`

#### 1.0.0 `fn le(&self, other: &Rhs) -> bool`

#### 1.0.0 `fn gt(&self, other: &Rhs) -> bool`

#### 1.0.0 `fn ge(&self, other: &Rhs) -> bool`

### `impl Eq for ()`1.0.0

### `impl PartialEq<()> for ()`1.0.0

#### `fn eq(&self, _other: &()) -> bool`

#### `fn ne(&self, _other: &()) -> bool`

### `impl ToSocketAddrs for (IpAddr, u16)`1.0.0

#### `type Iter = IntoIter<SocketAddr>`

#### `fn to_socket_addrs(&self) -> Result<IntoIter<SocketAddr>>`

### `impl ToSocketAddrs for (Ipv4Addr, u16)`1.0.0

#### `type Iter = IntoIter<SocketAddr>`

#### `fn to_socket_addrs(&self) -> Result<IntoIter<SocketAddr>>`

### `impl ToSocketAddrs for (Ipv6Addr, u16)`1.0.0

#### `type Iter = IntoIter<SocketAddr>`

#### `fn to_socket_addrs(&self) -> Result<IntoIter<SocketAddr>>`

### `impl<'a> ToSocketAddrs for (&'a str, u16)`1.0.0

#### `type Iter = IntoIter<SocketAddr>`

#### `fn to_socket_addrs(&self) -> Result<IntoIter<SocketAddr>>`

# Help

## Keyboard Shortcuts

?
  Show this help dialog
S
  Focus the search field
⇤
  Move up in search results
⇥
  Move down in search results
⏎
  Go to active search result

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)