Expand description
Creates a new stream where to produce each new element a provided closure is called.
This allows creating a custom stream with any behaviour without using the more verbose
syntax of creating a dedicated type and implementing a Stream
trait for it.
Examples
use async_std::prelude::*;
use async_std::stream;
let mut count = 0u8;
let s = stream::from_fn(|| {
count += 1;
if count > 3 {
None
} else {
Some(count)
}
});
pin_utils::pin_mut!(s);
assert_eq!(s.next().await, Some(1));
assert_eq!(s.next().await, Some(2));
assert_eq!(s.next().await, Some(3));
assert_eq!(s.next().await, None);