Trait vector2math::Pair[][src]

pub trait Pair: Sized {
    type Item;
    fn into_pair(self) -> (Self::Item, Self::Item);
fn from_items(a: Self::Item, b: Self::Item) -> Self;
fn first(&self) -> Self::Item;
fn second(&self) -> Self::Item; fn pairwise<O, P, F, R>(self, other: O, f: F) -> P
    where
        O: Pair,
        P: Pair<Item = R>,
        F: Fn(Self::Item, O::Item) -> R
, { ... }
fn pair_iter(self) -> Chain2<Self::Item> { ... } }

Trait for defining a pair of items of the same type.

This trait is meant to generalize having two similar things. It is implemented for (T, T) and [T; 2] with Item = T. However, because a pair does not necessarily have to be an actual pair It is also implemented for (T, T, T, T) and [T; 4] with Item = (T, T) and Item = [T; 2] respectively.

Associated Types

type Item[src]

The type of the pair’s item

Loading content...

Required methods

fn into_pair(self) -> (Self::Item, Self::Item)[src]

Get the pair

fn from_items(a: Self::Item, b: Self::Item) -> Self[src]

Create a pair from two items

fn first(&self) -> Self::Item[src]

Get the first item

fn second(&self) -> Self::Item[src]

Get the second item

Loading content...

Provided methods

fn pairwise<O, P, F, R>(self, other: O, f: F) -> P where
    O: Pair,
    P: Pair<Item = R>,
    F: Fn(Self::Item, O::Item) -> R, 
[src]

Apply a function pairwise to the items of two pairs

fn pair_iter(self) -> Chain2<Self::Item>[src]

Get an iterator over the pair’s items

Loading content...

Implementations on Foreign Types

impl<T> Pair for (T, T) where
    T: Clone
[src]

type Item = T

impl<T> Pair for [T; 2] where
    T: Copy
[src]

type Item = T

impl<T> Pair for (T, T, T, T) where
    T: Clone
[src]

type Item = (T, T)

impl<T> Pair for [T; 4] where
    T: Copy
[src]

type Item = [T; 2]

impl<T> Pair for (T, T, T, T, T, T) where
    T: Clone
[src]

type Item = (T, T, T)

impl<T> Pair for [T; 6] where
    T: Copy
[src]

type Item = [T; 3]

Loading content...

Implementors

Loading content...