r
А может быть такой итератор, который возвращает какой-то элемент после того как вернул None?
Поскольку имплементация некоторого итератора полностью на совести автора, такое может произойти и трейт Iterator никак это не ограничивает, верно?
Если итератор так делает, то это ошибка и его нужно переписать, верно?
И последнее: Нужно ли, по хорошему, запоминать в итераторе что-то типа is_finished, чтобы сразу возвращать None и не запускать основную логику, которая в итоге все ранво вернет None?