#[derive(Clone)]
pub(crate) struct Budget(u8);
impl Default for Budget {
fn default() -> Self {
Self(64)
}
}
impl Budget {
pub(crate) async fn acquire(&mut self) {
if self.0 == 0 {
*self = Self::default();
tokio::task::yield_now().await;
}
}
pub(crate) fn decrement(&mut self) {
self.0 = self.0.saturating_sub(1);
}
}