#![doc = include_str!("../docs/lib.md")]
#![cfg_attr(docsrs, feature(doc_cfg), warn(rustdoc::broken_intra_doc_links))]
#![deny(missing_docs)]
#![forbid(unsafe_code)]
#[cfg(all(feature = "redis-tokio", feature = "redis-smol"))]
compile_error!("Features `redis-tokio` and `redis-smol` are mutually exclusive");
mod builder;
pub use builder::RateLimiterBuilder;
#[cfg(any(feature = "redis-tokio", feature = "redis-smol"))]
pub(crate) mod runtime;
pub mod local;
#[cfg(any(feature = "redis-tokio", feature = "redis-smol"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "redis-tokio", feature = "redis-smol"))))]
pub mod redis;
#[cfg(any(feature = "redis-tokio", feature = "redis-smol"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "redis-tokio", feature = "redis-smol"))))]
pub mod hybrid;
mod error;
pub use error::TrypemaError;
mod common;
pub use common::{
BucketSize, ConditionalSetOutcome, HardLimitFactor, HistoryPreservation, RateLimit,
RateLimitComparator, RateLimitDecision, SuppressedRateLimitSnapshot,
SuppressionFactorCachePeriod, WindowSize,
};
#[cfg(test)]
mod tests;