forge_core/config/
rate_limit.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize)]
7#[serde(rename_all = "lowercase")]
8pub enum RateLimitMode {
9 #[default]
12 Hybrid,
13 Strict,
15}
16
17#[derive(Debug, Clone, Serialize, Deserialize)]
19#[non_exhaustive]
20pub struct RateLimitSettings {
21 #[serde(default)]
23 pub mode: RateLimitMode,
24
25 #[serde(default = "default_max_local_buckets")]
27 pub max_local_buckets: usize,
28}
29
30impl Default for RateLimitSettings {
31 fn default() -> Self {
32 Self {
33 mode: RateLimitMode::default(),
34 max_local_buckets: default_max_local_buckets(),
35 }
36 }
37}
38
39fn default_max_local_buckets() -> usize {
40 100_000
41}