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
14#![allow(
15	clippy::tabs_in_doc_comments,
16)]
17#![warn(
18	ambiguous_negative_literals,
19	let_underscore_drop,
20	missing_debug_implementations,
21	missing_docs,
22	single_use_lifetimes,
23	trivial_casts,
24	trivial_numeric_casts,
25	unit_bindings,
26	unused_crate_dependencies,
27	unused_lifetimes,
28	unused_qualifications,
29	unused_results,
30	variant_size_differences,
31)]
32
33mod config; pub use config::*;
34mod denied; pub use denied::*;
35mod too_early; pub use too_early::*;
36mod tracker; pub use tracker::*;
37mod tracker_time;
38
39// These traits are currently blocked from external impls.
40mod duration; pub(crate) use duration::*;
41mod time; pub(crate) use time::*;
42mod time_now; pub(crate) use time_now::*;
43
44mod std_duration;
45mod std_instant;
46mod std_systemtime;
47
48#[cfg(feature="serde")] mod serde;
49#[cfg(feature="serde")] mod time_serde;
50#[cfg(feature="serde")] pub(crate) use time_serde::*;
51
52#[cfg(feature="tokio")] mod tokio_instant;
53
54#[cfg(feature="serde")] #[cfg(test)] mod serde_test;
55
56#[cfg(test)] mod tracker_test;
57#[cfg(test)] mod tracker_time_test;