pub trait Combination<'a> {
type Combinator: Iterator;
// Required method
fn combination(&'a self, k: usize) -> Self::Combinator;
}Expand description
Create a combination out of T
Normally, it take a [T] or Vec<T> to create a combination.
§Example
use permutator::copy::Combination;
let data = [1, 2, 3, 4, 5];
data.combination(3).for_each(|c| {
// called multiple times.
// Each call have [1, 2, 3], [1, 2, 4], [1, 3, 4], [2, 3, 4]
// [1, 2, 5], [1, 3, 5], [2, 3, 5], [1, 4, 5], [2, 4, 5],
// and [3, 4, 5] respectively.
println!("{:?}", c);
});See Example implementation on foreign type.
Required Associated Types§
type Combinator: Iterator
Required Methods§
Sourcefn combination(&'a self, k: usize) -> Self::Combinator
fn combination(&'a self, k: usize) -> Self::Combinator
Create a CombinationIterator
of k size out of self.
See CombinationIterator for
how to use CombinationIterator
§Return
A new LargeCombinationIterator
Implementations on Foreign Types§
Source§impl<'a, T> Combination<'a> for [T]where
T: 'a + Copy,
impl<'a, T> Combination<'a> for [T]where
T: 'a + Copy,
type Combinator = LargeCombinationIterator<'a, T>
fn combination(&'a self, k: usize) -> LargeCombinationIterator<'a, T> ⓘ
Source§impl<'a, T> Combination<'a> for Vec<T>where
T: 'a + Copy,
impl<'a, T> Combination<'a> for Vec<T>where
T: 'a + Copy,
type Combinator = LargeCombinationIterator<'a, T>
fn combination(&'a self, k: usize) -> LargeCombinationIterator<'a, T> ⓘ
Implementors§
Source§impl<'a, 'b: 'a, T> Combination<'a> for CombinationIntoCellParams<'b, T>where
T: Copy,
impl<'a, 'b: 'a, T> Combination<'a> for CombinationIntoCellParams<'b, T>where
T: Copy,
type Combinator = LargeCombinationCellIter<'b, T>
Source§impl<'a, 'b: 'a, T> Combination<'a> for CombinationIntoRefParams<'b, T>where
T: Copy,
An implementation for convenient use of LargeCombinationRefIter
impl<'a, 'b: 'a, T> Combination<'a> for CombinationIntoRefParams<'b, T>where
T: Copy,
An implementation for convenient use of LargeCombinationRefIter
§Warning
It hid unsafe object instantiation of LargeCombinationRefIter from user but all unsafe conditions are still applied as long as the life of object itself.