Provides a
Rust
Stream
combinator, to limit the rate at which items are produced.
poll()
,
and not via any sort of buffering.Stream
's and Future
's.timer-tokio
: Uses the tokio::time::delay_for()
timer.timer-futures-timer
: Uses the futures_timer::Delay
timer.If you don't use the default timer (tokio
), make sure to set default-features = false
in your Cargo.toml
, when you add stream_throttle
as a dependency.
Stream
```rust // allow no more than 5 items every 1 second let rate = ThrottleRate::new(5, Duration::new(1, 0)); let pool = ThrottlePool::new(rate);
let work = stream::repeat(()) .throttle(pool) .then(|| futures::future::ready("do something else")) .foreach(|_| futures::future::ready(()));
work.await; ```
Future
```rust let rate = ThrottleRate::new(5, Duration::new(1, 0)); let pool = ThrottlePool::new(rate);
let work = pool.queue() .then(|_| futures::future::ready("do something else"));
work.await; ```