patternrustModerate
Lazy sequence generation in Rust
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
`# 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?
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
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
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.