zip2<T1, T2> function
Implementation
Iterable<Tuple2<T1, T2>> zip2<T1, T2>(
Iterable<T1> it1, Iterable<T2> it2) sync* {
final iter1 = it1.iterator;
final iter2 = it2.iterator;
var keep_running = true;
while (keep_running) {
final move1 = iter1.moveNext();
final move2 = iter2.moveNext();
final all_true = move1 && move2;
final all_false = !move1 && !move2;
assert((all_true || all_false), 'iteration length must be equal');
if (all_true) {
yield Tuple2<T1, T2>(iter1.current, iter2.current);
}
keep_running = all_true;
}
}