mirror of
https://github.com/async-rs/async-std.git
synced 2025-03-31 13:36:41 +00:00
47 lines
954 B
Rust
47 lines
954 B
Rust
use core::pin::Pin;
|
|
|
|
use crate::stream::Stream;
|
|
use crate::task::{Context, Poll};
|
|
|
|
/// Creates a stream that yields the same item repeatedly.
|
|
///
|
|
/// # Examples
|
|
///
|
|
/// ```
|
|
/// # async_std::task::block_on(async {
|
|
/// #
|
|
/// use async_std::prelude::*;
|
|
/// use async_std::stream;
|
|
///
|
|
/// let mut s = stream::repeat(7);
|
|
///
|
|
/// assert_eq!(s.next().await, Some(7));
|
|
/// assert_eq!(s.next().await, Some(7));
|
|
/// #
|
|
/// # })
|
|
/// ```
|
|
pub fn repeat<T>(item: T) -> Repeat<T>
|
|
where
|
|
T: Clone,
|
|
{
|
|
Repeat { item }
|
|
}
|
|
|
|
/// A stream that yields the same item repeatedly.
|
|
///
|
|
/// This stream is created by the [`repeat`] function. See its
|
|
/// documentation for more.
|
|
///
|
|
/// [`repeat`]: fn.repeat.html
|
|
#[derive(Clone, Debug)]
|
|
pub struct Repeat<T> {
|
|
item: T,
|
|
}
|
|
|
|
impl<T: Clone> Stream for Repeat<T> {
|
|
type Item = T;
|
|
|
|
fn poll_next(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll<Option<Self::Item>> {
|
|
Poll::Ready(Some(self.item.clone()))
|
|
}
|
|
}
|