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 variablecounter
and initializes it to 0.let result = counter_generator(3)
: This calls thecounter_generator
function with the argument3
and stores the result in theresult
variable.for x in result
: This loop iterates over the values returned by thecounter_generator
function.fn counter_generator(x: i32) -> impl Iterator<Item = i32>
: This is thecounter_generator
function, which takes ani32
argument and returns anIterator
ofi32
values.(0..x).map(|x| { counter += 1; counter })
: This uses themap
method to iterate over the range0..x
and increment thecounter
variable each time. Thecounter
variable is then yielded to the caller.
Helpful links
Related
- How to yield a thread in Rust?
- Yield generator in Rust
- How to yield return in Rust?
- How to use an async yield in Rust?
- How to implement a generator trait in Rust?
- Example of yield_now in Rust?
- How to use an async generator in Rust?
- How to create a generator iterator in Rust?
- How to use a generator map in Rust?
More of Rust
- How to match the end of a line in a Rust regex?
- How to parse JSON string in Rust?
- How to replace a capture group using Rust regex?
- How to match whitespace with a regex in Rust?
- How to match a URL with a regex in Rust?
- How to use non-capturing groups in Rust regex?
- How to replace strings using Rust regex?
- How to get a capture group using Rust regex?
- Hashshet example in Rust
- How to convert a Rust slice of u8 to a string?
See more codes...