Generación de secuencia perezosa en Rust

¿Cómo puedo crear lo que otros idiomas llaman una secuencia perezosa o una función de "generador"?

En Python, puedo usaryield como en el siguiente ejemplo (desde los documentos de Python) hasta generar perezosamente una secuencia que es iterable de una manera que no usa la memoria de una lista intermedia:

# 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))

¿Cómo puedo hacer algo similar en Rust?

Respuestas a la pregunta(3)

Su respuesta a la pregunta