В чем разница между position() и rposition() для итераторов rust и есть ли для этого какие-либо причины?

#rust #iterator

#Ржавчина #итератор

Вопрос:

Итак, я просматривал функции итератора (потому что они классные), и я заметил, что есть две функции, которые, казалось, делали одно и то же, за исключением того, что одна принимает ExactSizeIterator , а другая нет.

Каков был бы вариант использования одной функции поверх другой?

Ответ №1:

  • position начинается с начала и продвигается вперед, пока не найдет соответствующий элемент и не вернет его позицию. Для этого не требуется знать, сколько всего элементов, следовательно Iterator , достаточно.
  • rposition начинается с конца и идет назад, пока не найдет соответствующий элемент и не вернет его позицию (с самого начала!). Поскольку позиция возвращается с начала итератора (считайте, что ее можно использовать как индекс среза), ему необходимо точно знать, сколько элементов в итераторе, следовательно ExactSizeIterator , требуется.

Комментарии:

1. Ах, так вот что r означает! Спасибо 🙂