Генерация ленивых последовательностей в Rust

Как я могу создать то, что другие языки называют ленивой последовательностью или "генератор" функционировать?

В Python я могу использоватьyield как в следующем примере (из Python 's docs) для ленивой генерации последовательности, которая повторяется таким образом, чтобы не использовать память промежуточного списка:

# a generator that yields items instead of returning a list
def firstn(n):
    num = 0
    while num < n:
        yield num
        num += 1

sum_of_first_n = sum(firstn(1000000))

Как я могу сделать что-то подобное в Rust?

Ответы на вопрос(3)

Ваш ответ на вопрос