У меня есть несколько итераторов Rust, заданных пользовательским вводом, которые я хотел бы перебрать в lockstep.
Это звучит как работа для чего-то вроде Iterator::zip
, за исключением того, что мне может понадобиться более двух итераторов, сжатых вместе. Я посмотрел на itertools::multizip
и itertools::izip
, но оба они требуют, чтобы число итераторов, которые нужно сжать, было известно во время компиляции. Для моей задачи количество итераторов, которые должны быть объединены в архив, зависит от пользовательского ввода и, следовательно, не может быть известно во время компиляции.
Я надеялся на что-то вроде Python zip
функция , которая принимает итерируемые итерации. Я полагаю, подпись функции может выглядеть так:
fn manyzip<T>(iterators: Vec<T>) -> ManyZip<T>
where
T: Iterator
Как мне сжать более двух итераторов? отвечает только за ситуацию, когда число итераторов известно во время компиляции.
Я могу решить свою конкретную проблему, используя индексы и прочее, мне кажется, что должен быть лучший способ.