flux_limiter/
lib.rs

1// src/lib/lib.rs
2
3//! # Flux Limiter
4//!
5//! A high-performance rate limiter based on the Generic Cell Rate Algorithm (GCRA).
6//!
7//! ## Quick Example
8//!
9//! ```rust
10//! use flux_limiter::{FluxLimiter, FluxLimiterConfig, SystemClock};
11//!
12//! let config = FluxLimiterConfig::new(10.0, 5.0);
13//! let limiter = FluxLimiter::with_config(config, SystemClock).unwrap();
14//!
15//! let decision = limiter.check_request("user_123").unwrap();
16//! if decision.allowed {
17//!     println!("Request allowed");
18//! } else {
19//!     println!("Rate limited - retry after {:.2}s",
20//!              decision.retry_after_seconds.unwrap_or(0.0));
21//! }
22//! ```
23
24// private modules
25mod config;
26mod errors;
27mod flux_limiter;
28mod clock;
29
30// public API exports
31pub use clock::{Clock, SystemClock, ClockError};
32pub use config::FluxLimiterConfig;
33pub use errors::FluxLimiterError;
34pub use flux_limiter::{FluxLimiter, FluxLimiterDecision};