mod lazy_stream;
mod timer;
pub use lazy_stream::LazyRateLimitedStream;
use futures::Stream;
use crate::{Clock, RawTokenBucket, TimeStorage};
pub trait LazyRateLimitedStreamExt<S, ST, C>
where
S: Stream,
ST: TimeStorage,
C: Clock,
{
fn lazy_rate_limited(self, bucket: RawTokenBucket<ST, C>) -> LazyRateLimitedStream<S, ST, C>;
}
impl<S, ST, C> LazyRateLimitedStreamExt<S, ST, C> for S
where
S: Stream,
ST: TimeStorage,
C: Clock,
{
fn lazy_rate_limited(self, bucket: RawTokenBucket<ST, C>) -> LazyRateLimitedStream<S, ST, C> {
LazyRateLimitedStream::new(self, bucket)
}
}