так делаю
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=6452445ad0752e3a7a444e5a254a042f
Ты должен свою структуру написать? Готовые не подойдут?
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=84cf8f00ecd2171f748320b8683bc38f
хочется пикнуть второй элемент не понял аргумент про бесконечную рекурсию любая рекурсия может быть бесконечной
А ну знач просто компилятор задолбался бесконечно генерировать f<XS>
че бесконечно то там же есть условие выхода из рекурсии
.peekable() возвращает тебе Peekable<I>. А I у тебя итератор, который до этого мог быть завёрнут много раз, пока ты рекурсивно вызывал функцию.
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=bbba3cd97a9bac3e31397d9af2b5cdd1 Пожалуйста, пикай на здоровье.
в общем я понял ты убрал заворачивание в Peekable<> на итерациях и проблема ушла разумно но также разумно мне кажется чтобы Peekable<>.peekable == Peekable<> без оборачивания дополнительного
А там .peekable реализован ток для Iterator условно
А если человеку надо именно Peekable<Peekable<I>>, как ему это получить предлагаешь?
Два элемента пикнуть?
Не, так-то бесполезный тип, но из-за сигнатуры функции peekable оно всё равно всегда будет оборачивать ещё раз. Как и вообще любые адапторы (chain, cloned, copied, filter, filter_map, flat_map, flatten, etc).
Обсуждают сегодня