pub fn exhaustive_vecs_fixed_length_2_inputs<T: Clone, I: Iterator<Item = T>, J: Iterator<Item = T>>(
xs: I,
ys: J,
output_types: &[(BitDistributorOutputType, usize)],
) -> ExhaustiveFixedLengthVecs2Inputs<T, I, J> ⓘ
Expand description
This documentation applies not only to exhaustive_vecs_fixed_length_2_inputs
, but also
to exhaustive_vecs_fixed_length_3_inputs
, exhaustive_vecs_fixed_length_4_inputs
, and
so on. See exhaustive_vecs_fixed_length
for more information.
Generates all Vec
s of a given length with elements from $m$ iterators, where $m \leq
n$.
The output_types
parameter defines which iterators are mapped to which slot in the
output Vec
s, and how quickly each output slot advances through its iterator. The
length of the output Vec
s, $n$, is specified by the length of output_types
.
The $i$th element of output_types
is a pair of BitDistributorOutputType
and
usize
. The BitDistributorOutputType
determines how quickly the $i$th output slot
advances through its iterator; see the BitDistributor
documentation for a
description of the different types. The usize
is an index from 0 to $m-1$ which
specifies which iterator the $i$th output slot is populated with. Together, the usize
s
must include all indices from 0 to $m-1$, inclusive, possibly with repetitions.
If all of xs
, ys
, zs
, … are finite, the output length is the product of their
lengths. If any of xs
, ys
, zs
, … are infinite, the output is also infinite.
If any of xs
, ys
, zs
, … is empty, the output is also empty.
§Panics
Panics if the usize
s in output_types
do not include all indices from 0 to $m-1$,
inclusive, possibly with repetitions. In particular, the length of output_types
must
be at least $m$.
§Examples
See here.