rl_core/
lib.rs

1//! Simple, pure rate limiting.
2//!
3//! ```
4//! const CONFIG: rl_core::Config = rl_core::Config::new(
5//! 	std::time::Duration::from_secs(1),
6//! 	3,
7//! );
8//! let mut tracker = rl_core::Tracker::full();
9//! assert!(tracker.acquire(&CONFIG, 1).is_ok());
10//! assert!(tracker.acquire(&CONFIG, 2).is_ok());
11//! assert!(tracker.acquire(&CONFIG, 1).is_err());
12//! ```
13
14mod config; pub use config::*;
15mod denied; pub use denied::*;
16mod too_early; pub use too_early::*;
17mod tracker; pub use tracker::*;
18mod tracker_time;
19
20// These traits are currently blocked from external impls.
21mod duration; pub(crate) use duration::*;
22mod time; pub(crate) use time::*;
23mod time_now; pub(crate) use time_now::*;
24
25mod std_duration;
26mod std_instant;
27mod std_systemtime;
28
29#[cfg(feature="serde")] mod serde;
30#[cfg(feature="serde")] mod time_serde;
31#[cfg(feature="serde")] pub(crate) use time_serde::*;
32
33#[cfg(feature="tokio")] mod tokio_instant;
34
35#[cfg(feature="serde")] #[cfg(test)] mod serde_test;
36
37#[cfg(test)] mod tracker_test;
38#[cfg(test)] mod tracker_time_test;