Skip to main content

Denial

Enum Denial 

Source
#[non_exhaustive]
pub enum Denial { QuotaExceeded { capacity: u64, retry_after: Duration, }, StorageCapacity { retry_after: Option<Duration>, }, }
Expand description

Structured details for a denied check.

A quota denial always contains its policy capacity and the duration until the requested cost can be retried. A storage-capacity denial may contain the duration until the backend’s earliest known expiry, when one is available.

Process-local backends can measure the duration at evaluation time exactly. Distributed backends may return a safe upper bound measured with their authoritative clock, which can overstate the duration at the caller by commit and transport time.

With the serde feature, this is an object tagged by reason. Durations use Serde’s exact { "secs": ..., "nanos": ... } representation.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

QuotaExceeded

Consuming the requested cost would exceed the configured quota.

Fields

§capacity: u64

Maximum immediately available policy allowance.

§retry_after: Duration

Duration until the rejected cost can be retried.

§

StorageCapacity

A bounded backend could not safely allocate storage for a new key.

Fields

§retry_after: Option<Duration>

Duration until capacity may become available, when known.

Implementations§

Source§

impl Denial

Source

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

Returns the backend-reported duration after which the caller may retry, if known.

Source

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

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

The underlying Duration remains available through Denial::retry_after. Values beyond the representable range saturate at u64::MAX.

Trait Implementations§

Source§

impl Clone for Denial

Source§

fn clone(&self) -> Denial

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 Denial

Source§

impl Debug for Denial

Source§

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

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

impl<'de> Deserialize<'de> for Denial

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 Denial

Source§

impl PartialEq for Denial

Source§

fn eq(&self, other: &Denial) -> 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 Denial

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 Denial

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.