rustYield example in Rust
Yield is a feature of Rust that allows a function to pause its execution and return a value to the caller. It is similar to the return statement, but instead of returning a single value, it can return multiple values over time.
Example code
fn main() {
let mut counter = 0;
let result = counter_generator(3);
for x in result {
println!("{}", x);
}
}
fn counter_generator(x: i32) -> impl Iterator<Item = i32> {
(0..x).map(|x| {
counter += 1;
counter
})
}
Output example
1
2
3
Code explanation
fn main(): This is the main function, which is the entry point of the program.let mut counter = 0: This declares a mutable variablecounterand initializes it to 0.let result = counter_generator(3): This calls thecounter_generatorfunction with the argument3and stores the result in theresultvariable.for x in result: This loop iterates over the values returned by thecounter_generatorfunction.fn counter_generator(x: i32) -> impl Iterator<Item = i32>: This is thecounter_generatorfunction, which takes ani32argument and returns anIteratorofi32values.(0..x).map(|x| { counter += 1; counter }): This uses themapmethod to iterate over the range0..xand increment thecountervariable each time. Thecountervariable is then yielded to the caller.
Helpful links
Related
More of Rust
- How to replace a capture group using Rust regex?
- How to replace strings using Rust regex?
- How to match whitespace with a regex in Rust?
- How to match a URL with a regex in Rust?
- How to ignore case in Rust regex?
- How to check if a Rust HashMap contains a key?
- Generator example in Rust
- How to convert a Rust slice of u8 to a string?
- Example of struct private field in Rust
- Example of yield_now in Rust?
See more codes...