Trait permutator::Combination
source · pub trait Combination<'a> {
type Combinator: Iterator;
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::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 family of LargeCombinationIterator
of k
size out of self
.
See LargeCombinationIterator for
how to use LargeCombinationIterator
Return
A new family of LargeCombinationIterator
Implementations on Foreign Types
sourceimpl<'a, T> Combination<'a> for [T]where
T: 'a,
impl<'a, T> Combination<'a> for [T]where
T: 'a,
An implementation for convenient use of LargeCombinationIterator
type Combinator = LargeCombinationIterator<'a, T>
fn combination(&'a self, k: usize) -> LargeCombinationIterator<'a, T> ⓘ
sourceimpl<'a, T> Combination<'a> for Vec<T>where
T: 'a,
impl<'a, T> Combination<'a> for Vec<T>where
T: 'a,
An implementation for convenient use of LargeCombinationIterator
type Combinator = LargeCombinationIterator<'a, T>
fn combination(&'a self, k: usize) -> LargeCombinationIterator<'a, T> ⓘ
Implementors
sourceimpl<'a, 'b: 'a, T> Combination<'a> for CombinationIntoCellParams<'b, T>
impl<'a, 'b: 'a, T> Combination<'a> for CombinationIntoCellParams<'b, T>
An implementation for convenient use of LargeCombinationCellIter
type Combinator = LargeCombinationCellIter<'b, T>
sourceimpl<'a, 'b: 'a, T> Combination<'a> for CombinationIntoRefParams<'b, T>
impl<'a, 'b: 'a, T> Combination<'a> for CombinationIntoRefParams<'b, T>
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.