I have an iter_mut() and I'd like to use it to overwrite the underlying data from another iterator.
iter_to.for_each(|x| *x = *iter_from.next().unwrap());
Is there a shorthand notation for this?
Thanks
I have an iter_mut() and I'd like to use it to overwrite the underlying data from another iterator.
iter_to.for_each(|x| *x = *iter_from.next().unwrap());
Is there a shorthand notation for this?
Thanks
I was going to suggest the same. However for completeness note that there is a slight difference… the original code panics when the iter_to
is longer than iter_from
, while the zip
solution will not panic, but simply leave the parts of iter_to
beyond the length of iter_from
unmodified.
Assuming that what might actually be wanted here is that both iterators must have the same length, the zip_eq
method from the itertools
crate might be useful.
Thanks both, impressively quick and comprehensive responses.
Both solutions let me get rid of the preceding let statement for creating iter_from, which is great. I went with #1 just because it did not pull in itertools, although it is a good point about not panicking when iter_from is shorter.
This topic was automatically closed 90 days after the last reply. We invite you to open a new topic if you have further questions or comments.