Skip to main content

Budget

Struct Budget 

Source
pub struct Budget { /* private fields */ }
Expand description

A cloneable handle to one node in a hierarchical resource budget.

Implementations§

Source§

impl Budget

Source

pub fn builder() -> BudgetBuilder

Starts a root budget builder.

Source

pub fn child(&self) -> BudgetBuilder

Starts a child builder whose operations will also count against this node.

Source

pub fn id(&self) -> BudgetId

Returns this node’s process-local identifier.

Source

pub fn consume( &self, resource: &Resource, amount: u64, ) -> Result<(), BudgetError>

Immediately and atomically consumes an amount across the entire lineage.

§Errors

Returns an error when the request overflows, exceeds a limit, or begins after the effective deadline or cancellation request.

Source

pub fn reserve( &self, resource: &Resource, amount: u64, ) -> Result<Reservation, BudgetError>

Atomically reserves capacity for one resource.

§Errors

Returns an error when the request overflows, exceeds a limit, or begins after the effective deadline or cancellation request.

Source

pub fn reserve_many<'a>( &self, resources: impl IntoIterator<Item = (&'a Resource, u64)>, ) -> Result<ReservationSet, BudgetError>

Atomically reserves several resources, combining duplicate entries.

The input is canonicalized by resource name. Overflow or exhaustion changes no accounting state.

§Errors

Returns an error when canonicalization overflows, a request exceeds a limit, or the operation begins after the effective deadline or cancellation request.

Source

pub fn remaining(&self, resource: &Resource) -> Remaining

Returns effective remaining capacity at one consistent instant.

The result is observational. Only Budget::consume, Budget::reserve, and Budget::reserve_many authorize work.

Source

pub fn snapshot(&self) -> BudgetSnapshot

Captures a consistent snapshot across this node’s complete lineage.

Source§

impl Budget

Source

pub fn cancel(&self)

Requests cancellation of this budget and all existing or future children.

Source

pub fn is_cancelled(&self) -> bool

Returns whether cancellation has been requested for this node.

Source

pub async fn run<F>(&self, future: F) -> Result<F::Output, BudgetError>
where F: Future,

Runs a future until it completes, cancellation is requested, or the effective deadline expires.

If several branches are ready simultaneously, cancellation wins over the deadline, which wins over future completion. Dropping the future is only safe when the future itself is cancellation-safe.

§Errors

Returns BudgetError::Cancelled or BudgetError::DeadlineExceeded when the corresponding terminal condition wins.

Trait Implementations§

Source§

impl Clone for Budget

Source§

fn clone(&self) -> Budget

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
Source§

impl Debug for Budget

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. 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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> 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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more