Skip to main content

ByteBudget

Struct ByteBudget 

Source
pub struct ByteBudget(/* private fields */);
Expand description

Child usage is included in every ancestor; creating children does not multiply the parent limit. Names are static component names, not tenant identifiers or unbounded metric labels. Dropping the last child handle and reservation releases its metadata without retaining a central registry.

Implementations§

Source§

impl ByteBudget

Source

pub fn new(name: &'static str, limit: usize) -> Result<Self, ResourceError>

Create a root budget labelled name with the given byte limit.

§Errors

Returns ResourceError::Invalid if limit is zero.

Source

pub fn child( &self, name: &'static str, limit: usize, ) -> Result<Self, ResourceError>

Create a child budget whose usage is also charged to this budget.

§Errors

Returns ResourceError::Invalid if limit is zero or exceeds the parent limit, or if nesting would exceed 32 levels.

Source

pub fn snapshot(&self) -> BudgetSnapshot

Snapshot this budget’s limit, current usage, and peak usage.

Source

pub fn available(&self) -> usize

Available in this budget AND every parent at one accounting instant.

§Panics

Panics if the ancestor chain is empty, which cannot happen because a budget always has at least itself.

Source

pub fn try_reserve( &self, bytes: usize, ) -> Result<ByteReservation, ResourceError>

Immediate admission, before allocation. Queueing, deadlines and fair scheduling are deliberately separate work; this never blocks for bytes.

§Errors

Returns ResourceError::Exhausted if this budget or any ancestor cannot admit bytes.

Trait Implementations§

Source§

impl Clone for ByteBudget

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.