request_rate_limiter/algorithms/fixed.rs
1use async_trait::async_trait;
2
3use super::{RateLimitAlgorithm, RequestSample};
4
5/// A simple, fixed request rate limit.
6#[derive(Debug, Clone)]
7pub struct Fixed(u64);
8impl Fixed {
9 #[allow(missing_docs)]
10 pub fn new(rps: u64) -> Self {
11 assert!(rps > 0);
12
13 Self(rps)
14 }
15}
16
17#[async_trait]
18impl RateLimitAlgorithm for Fixed {
19 fn requests_per_second(&self) -> u64 {
20 self.0
21 }
22
23 async fn update(&self, _sample: RequestSample) -> u64 {
24 self.0
25 }
26}