Skip to main content

Decision

Struct Decision 

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

The outcome of evaluating one check.

Allowed outcomes report immediately available allowance after the check and the backend-reported time until full capacity is replenished. Denied outcomes carry a Denial.

With the serde feature, this is an object tagged by outcome. Invalid allowed metadata, such as available exceeding capacity, is rejected.

Implementations§

Source§

impl Decision

Source

pub const fn allowed( capacity: u64, available: u64, replenishes_after: Duration, ) -> Self

Constructs an allowed decision.

Storage backends should pass the available allowance after consuming the check’s cost. This low-level constructor trusts the backend to ensure available <= capacity.

Source

pub const fn denied(denial: Denial) -> Self

Constructs a denied decision.

Source

pub const fn shadow_denied(denial: Denial) -> Self

Constructs a shadow quota denial.

Backends must use this only for Denial::QuotaExceeded. Storage capacity remains an enforced denial in every quota mode.

Source

pub const fn is_allowed(&self) -> bool

Returns whether the application may proceed.

This includes both consumed allowed decisions and quota denials from a shadow policy.

Source

pub const fn is_denied(&self) -> bool

Returns whether the application must reject the operation.

Source

pub const fn permits_request(&self) -> bool

Returns whether the application may proceed.

Source

pub const fn would_deny(&self) -> bool

Returns whether this check encountered quota or capacity denial.

Source

pub const fn is_enforced_denial(&self) -> bool

Returns whether this decision must be enforced.

Source

pub const fn is_shadow_denied(&self) -> bool

Returns whether quota was exceeded in shadow mode.

Source

pub const fn capacity(&self) -> Option<u64>

Returns the configured capacity when it is meaningful for this outcome.

Allowed decisions and quota denials have a capacity. Storage-capacity denials do not.

Source

pub const fn available(&self) -> Option<u64>

Returns the immediately available allowance after a consumed check.

Source

pub const fn replenishes_after(&self) -> Option<Duration>

Returns when an allowed decision’s full capacity is next available.

Source

pub const fn retry_after(&self) -> Option<Duration>

Returns the backend-reported duration after which a denied check may retry.

Source

pub const fn retry_after_seconds(&self) -> Option<u64>

Returns a whole-second Retry-After value rounded up, if known.

Source

pub const fn denial(&self) -> Option<&Denial>

Returns denial details for a denied check.

Trait Implementations§

Source§

impl Clone for Decision

Source§

fn clone(&self) -> Decision

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 Copy for Decision

Source§

impl Debug for Decision

Source§

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

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for Decision

Available on crate feature serde only.
Source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Eq for Decision

Source§

impl PartialEq for Decision

Source§

fn eq(&self, other: &Decision) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for Decision

Available on crate feature serde only.
Source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for Decision

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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

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 = 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.