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 use non-capturing groups in Rust regex?
- How to sort a Rust HashMap?
- How to use a tuple as a key in a Rust HashMap?
- How to find the first match in a Rust regex?
- Generator example in Rust
- How to use regex to match a group in Rust?
- How to declare a constant Rust HashMap?
See more codes...