A stream produced by an async generator function.
Generator are async functions or closures which contain the yield
expressions.
Examples
use Stream;
let f = async |n| ;
let g = f;
assert!;
Methods
Get the next value produced by this stream through an asynchronous iterator-like protocol.
This function will resume execution until a value is produced through GeneratorState::Yielded(value)
, at which point it will return Some(value)
. Once GeneratorState::Complete
is returned None
will be returned.
Examples
use GeneratorState;
async
let g = generate;
assert_eq!;
assert_eq!;
assert_eq!;
``
Resumes the execution of this stream.
This function will resume execution of the stream or start execution if it hasn't already. This call will return back into the stream's last suspension point, resuming execution from the latest yield
. The stream will continue executing until it either yields or returns, at which point this function will return.
Return value
The GeneratorState
enum returned from this function indicates what state the stream is in upon returning. If the Yielded
variant is returned then the stream has reached a suspension point and a value has been yielded out. Streams in this state are available for resumption at a later point.
If Complete
is returned then the stream has completely finished with the value provided. It is invalid for the stream to be resumed again.
Panics
This function may panic if it is called after the Complete
variant has been returned previously. While stream literals in the language are guaranteed to panic on resuming after Complete
, this is not guaranteed for all implementations of the Stream
.
Examples
use GeneratorState;
async
let g = generate;
assert_eq!;
assert_eq!;
assert_eq!;
``
Trait Implementations
Clone the specified value
.
Examples
let a = 42;
let b = a;
let c = a.clone;
a += 1;
assert_eq!;
assert_eq!;
assert_eq!;
Protocols
format!
Debug print this stream
Examples
use GeneratorState;
let a = generate;
println!;
``
let $out = clone
Clone a stream.
This clones the state of the stream too, allowing it to be resumed independently.
Examples
use GeneratorState;
async
let a = generate;
assert_eq!;
let b = a.clone;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
``