есть Zip<Iter<>, Iter<>> мне нужно пройтись по нему в двух циклах for по-наивному сделать нельзя, ругается на использование после мува: for (token, rule) in iter { } for (token, rule) in iter { // <- здесь ругается } но если я ставлю & перед iter, то пишет что &Zip is not iterator как тут взять ссылку?
есть Zip<Iter<>, Iter<>> мне нужно пройтись по нему в двух циклах for по-наивному сделать нельзя, ругается на использование после мува: for (token, rule) in iter { } for (token, rule) in iter { // <- здесь ругается } но если я ставлю & перед iter, то пишет что &Zip is not iterator как тут взять ссылку?
подозреваю, что сам зип итератор можно склонировать
есть Zip<Iter<>, Iter<>> мне нужно пройтись по нему в двух циклах for по-наивному сделать нельзя, ругается на использование после мува: for (token, rule) in iter { } for (token, rule) in iter { // <- здесь ругается } но если я ставлю & перед iter, то пишет что &Zip is not iterator как тут взять ссылку?
А в первом форе если &mut iter сделать не работает?
1. можно через into_any_box() -> Box<dyn Any> (а потом уже на Box<dyn Any> можно downcast) 2. можно свой аля-Any в Trait завезти (`mopa` крейт) 3. если совсем упороться (например тесту и вообще), можно затрансмьютить, скрестив пальцы (именно это downcast и делает, ну кроме того что вместо скрещивания пальцев оно все-таки чекает тип)