prob-rate-limiter

crates.io version license: Apache 2.0 unsafe forbidden pipeline status

ProbRateLimiter is a probabilistic rate limiter. When load approaches the configured limit, the struct chooses randomly whether to accept or reject each request. It adjusts the probability of rejection so throughput is steady around the limit.

Use Cases

Features

Limitations

Alternatives

Related Crates

Example

rust let mut limiter = ProbRateLimiter::new(10.0).unwrap(); let mut now = Instant::now(); assert!(limiter.check(5, now)); assert!(limiter.check(5, now)); now += Duration::from_secs(1); assert!(limiter.check(5, now)); assert!(limiter.check(5, now)); now += Duration::from_secs(1); assert!(limiter.check(5, now)); assert!(limiter.check(5, now)); now += Duration::from_secs(1); assert!(limiter.check(5, now)); assert!(limiter.check(5, now)); now += Duration::from_secs(1); assert!(limiter.check(5, now)); assert!(limiter.check(5, now)); assert!(!limiter.check(5, now));

Cargo Geiger Safety Report

```

Metric output format: x/y x = unsafe code used by the build y = total unsafe code found in the crate

Symbols: 🔒 = No unsafe usage found, declares #![forbid(unsafecode)] ❓ = No unsafe usage found, missing #![forbid(unsafecode)] ☢️ = unsafe usage found

Functions Expressions Impls Traits Methods Dependency

0/0 0/0 0/0 0/0 0/0 🔒 prob-rate-limiter 0.1.0 0/0 0/0 0/0 0/0 0/0 🔒 └── oorandom 11.1.3

0/0 0/0 0/0 0/0 0/0

```

Changelog

TO DO

License: Apache-2.0