#![doc = include_str!("../README.md")]
mod bucket;
mod clock;
mod error;
#[cfg(feature = "async")]
pub mod futures;
mod limit;
mod raw_bucket;
mod storage;
mod tokens;
pub use bucket::{TokenBucket, UNLIMITED_BUCKET};
#[cfg(feature = "tokio")]
pub use clock::TokioClock;
pub use clock::{Clock, ManualClock, StdClock};
#[cfg(feature = "quanta")]
pub use clock::{FastClock, QuantaClock};
pub use error::*;
#[cfg(feature = "async")]
pub use futures::StreamExt;
pub use limit::Limit;
pub use raw_bucket::RawTokenBucket;
pub use tokens::Tokens;
pub use storage::{
TimeStorage, atomic::AtomicSharedStorage, atomic::AtomicStorage, local::LocalStorage,
padded_atomic::PaddedAtomicSharedStorage, padded_atomic::PaddedAtomicStorage,
};
pub type LocalTokenBucket<C> = TokenBucket<LocalStorage, C>;
pub type AtomicTokenBucket<C> = TokenBucket<AtomicStorage, C>;
pub type SharedTokenBucket<C> = TokenBucket<PaddedAtomicSharedStorage, C>;
pub(crate) mod private {
pub trait Sealed {}
}