#rust #iterator
#Ржавчина #итератор
Вопрос:
Итак, я просматривал функции итератора (потому что они классные), и я заметил, что есть две функции, которые, казалось, делали одно и то же, за исключением того, что одна принимает ExactSizeIterator
, а другая нет.
Каков был бы вариант использования одной функции поверх другой?
Ответ №1:
position
начинается с начала и продвигается вперед, пока не найдет соответствующий элемент и не вернет его позицию. Для этого не требуется знать, сколько всего элементов, следовательноIterator
, достаточно.rposition
начинается с конца и идет назад, пока не найдет соответствующий элемент и не вернет его позицию (с самого начала!). Поскольку позиция возвращается с начала итератора (считайте, что ее можно использовать как индекс среза), ему необходимо точно знать, сколько элементов в итераторе, следовательноExactSizeIterator
, требуется.
Комментарии:
1. Ах, так вот что
r
означает! Спасибо 🙂