mod fixed_window;
mod sliding_window;
use crate::error::ReserveError;
use crate::storage::Storage;
use crate::Reservation;
pub use fixed_window::FixedWindowPolicy;
pub use sliding_window::SlidingWindowPolicy;
pub trait Policy {
fn reserve(
&mut self,
tokens: usize,
max_time: Option<i64>,
) -> Result<Reservation, ReserveError>;
fn consume(&mut self, tokens: usize) -> Result<Reservation, ReserveError>;
}