leaky-bucket 1.1.2

A token-based rate limiter based on the leaky bucket algorithm.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use leaky_bucket::RateLimiter;
use tokio::time::Duration;

#[tokio::main]
async fn main() {
    let limiter = RateLimiter::builder().refill(1).initial(1).build();

    assert!(limiter.try_acquire(1));
    assert!(!limiter.try_acquire(1));

    tokio::time::sleep(Duration::from_millis(200)).await;

    assert!(limiter.try_acquire(1));
    assert!(limiter.try_acquire(1));
    assert!(!limiter.try_acquire(1));
}