HiveBrain v1.2.0
Get Started
← Back to all entries
patternrustModerate

Lazy sequence generation in Rust

Submitted by: @import:stackoverflow-api··
0
Viewed 0 times
lazyrustgenerationsequence

Problem

How can I create what other languages call a lazy sequence or a "generator" function?

In Python, I can use yield as in the following example (from Python's docs) to lazily generate a sequence that is iterable in a way that does not use the memory of an intermediary list:

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

How can I do something similar in Rust?

Solution

Rust 1.0 does not have generator functions, so you'd have to do it manually with explicit iterators.

First, rewrite your Python example as a class with a next() method, since that is closer to the model you're likely to get in Rust. Then you can rewrite it in Rust with a struct that implements the Iterator trait.

You might also be able to use a function that returns a closure to achieve a similar result, but I don't think it would be possible to have that implement the Iterator trait (since it would require being called to generate a new result).

Context

Stack Overflow Q#16421033, score: 20

Revisions (0)

No revisions yet.