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}