Skip to main content

StructureLimits

Struct StructureLimits 

Source
pub struct StructureLimits<R = StructureResource, Q = usize>{ /* private fields */ }
Expand description

Optional limits for processing nested structural data.

R identifies the resource values reported in crate::BudgetError, and Q is the exact unsigned quantity used for all measurements. The default configuration uses StructureResource and usize.

§Type Parameters

  • R - Caller-defined resource identity retained by limits and errors.
  • Q - Exact unsigned quantity used for measurements and accounting.

§Examples

use qubit_budget::StructureLimits;

let limits = StructureLimits::builder()
    .max_depth(4)
    .max_nodes(16)
    .build();
let mut budget = limits.budget();

budget.check_depth(4).expect("the inclusive depth limit should fit");
budget.charge_node().expect("the first node should fit");
assert_eq!(budget.used_nodes(), Some(1));

Implementations§

Source§

impl<R, Q> StructureLimits<R, Q>

Source

pub const fn new() -> Self

Creates an unconfigured custom-resource limit set.

The default StructureResource/usize configuration is constructed with Self::new. Custom resource sets use this constructor because their resource identity is supplied by each *_limit method.

§Returns

Creates an unconfigured custom-resource limit set.

Source

pub const fn builder() -> StructureLimitsBuilder<R, Q>

Creates a builder for structural limits.

§Returns

Creates a builder for structural limits.

Source

pub const fn into_builder(self) -> StructureLimitsBuilder<R, Q>

Converts these limits into a builder for further configuration.

§Returns

Converts these limits into a builder for further configuration.

Source

pub fn to_builder(&self) -> StructureLimitsBuilder<R, Q>
where R: Clone,

Creates a builder by cloning this limit configuration.

Unlike Self::into_builder, this method leaves the original limits available for reuse.

§Returns

A builder initialized with a clone of every configured limit.

Source

pub const fn has_limits(&self) -> bool

Returns whether any structural limit is configured.

§Returns

true when at least one structural dimension has a finite limit; otherwise false.

Source

pub const fn depth_limit(&self) -> Option<&ResourceLimit<R, Q>>

Returns the complete depth limit, when configured.

§Returns

Returns the complete depth limit, when configured.

None indicates that the corresponding limit or budget dimension is unconfigured.

Source

pub const fn nodes_limit(&self) -> Option<&ResourceLimit<R, Q>>

Returns the complete node limit, when configured.

§Returns

Returns the complete node limit, when configured.

None indicates that the corresponding limit or budget dimension is unconfigured.

Source

pub const fn sequence_items_limit(&self) -> Option<&ResourceLimit<R, Q>>

Returns the complete sequence-item limit, when configured.

§Returns

Returns the complete sequence-item limit, when configured.

None indicates that the corresponding limit or budget dimension is unconfigured.

Source

pub const fn map_entries_limit(&self) -> Option<&ResourceLimit<R, Q>>

Returns the complete map-entry limit, when configured.

§Returns

Returns the complete map-entry limit, when configured.

None indicates that the corresponding limit or budget dimension is unconfigured.

Source

pub const fn key_bytes_limit(&self) -> Option<&ResourceLimit<R, Q>>

Returns the complete structural-key limit, when configured.

§Returns

Returns the complete structural-key limit, when configured.

None indicates that the corresponding limit or budget dimension is unconfigured.

Source

pub const fn max_depth(&self) -> Option<Q>

Returns the configured maximum nesting depth.

§Returns

Returns the configured maximum nesting depth.

None indicates that the corresponding limit or budget dimension is unconfigured.

Source

pub const fn max_nodes(&self) -> Option<Q>

Returns the configured maximum number of processed nodes.

§Returns

Returns the configured maximum number of processed nodes.

None indicates that the corresponding limit or budget dimension is unconfigured.

Source

pub const fn max_sequence_items(&self) -> Option<Q>

Returns the configured maximum number of items in one sequence.

§Returns

Returns the configured maximum number of items in one sequence.

None indicates that the corresponding limit or budget dimension is unconfigured.

Source

pub const fn max_map_entries(&self) -> Option<Q>

Returns the configured maximum number of entries in one map.

§Returns

Returns the configured maximum number of entries in one map.

None indicates that the corresponding limit or budget dimension is unconfigured.

Source

pub const fn max_key_bytes(&self) -> Option<Q>

Returns the configured maximum byte length of one structural key.

§Returns

Returns the configured maximum byte length of one structural key.

None indicates that the corresponding limit or budget dimension is unconfigured.

Source

pub fn budget(&self) -> StructureBudget<R, Q>
where R: Clone,

Creates an independent structural budget session from these limits.

§Returns

Creates an independent structural budget session from these limits.

Trait Implementations§

Source§

impl<R: Clone, Q> Clone for StructureLimits<R, Q>

Source§

fn clone(&self) -> StructureLimits<R, Q>

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<R: Copy, Q> Copy for StructureLimits<R, Q>

Source§

impl<R: Debug, Q> Debug for StructureLimits<R, Q>

Source§

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

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

impl<R, Q> Default for StructureLimits<R, Q>

Source§

fn default() -> Self

Creates structural limits with every dimension unconfigured.

§Returns

Creates structural limits with every dimension unconfigured.

Source§

impl<R: Eq, Q> Eq for StructureLimits<R, Q>
where Q: ResourceQuantity + Eq,

Source§

impl<R, Q> From<StructureLimitsBuilder<R, Q>> for StructureLimits<R, Q>

Source§

fn from(builder: StructureLimitsBuilder<R, Q>) -> Self

Finishes the builder and returns its structural limit configuration.

§Parameters
  • builder - Builder whose accumulated configuration is consumed.
§Returns

Finishes the builder and returns its structural limit configuration.

Source§

impl<R: Hash, Q> Hash for StructureLimits<R, Q>

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl<R: PartialEq, Q> PartialEq for StructureLimits<R, Q>

Source§

fn eq(&self, other: &StructureLimits<R, Q>) -> bool

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

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

Inequality operator !=. Read more
Source§

impl<R: PartialEq, Q> StructuralPartialEq for StructureLimits<R, Q>

Auto Trait Implementations§

§

impl<R, Q> Freeze for StructureLimits<R, Q>
where Option<ResourceLimit<R, Q>>: Freeze,

§

impl<R, Q> RefUnwindSafe for StructureLimits<R, Q>

§

impl<R, Q> Send for StructureLimits<R, Q>
where Option<ResourceLimit<R, Q>>: Send,

§

impl<R, Q> Sync for StructureLimits<R, Q>
where Option<ResourceLimit<R, Q>>: Sync,

§

impl<R, Q> Unpin for StructureLimits<R, Q>
where Option<ResourceLimit<R, Q>>: Unpin,

§

impl<R, Q> UnsafeUnpin for StructureLimits<R, Q>

§

impl<R, Q> UnwindSafe for StructureLimits<R, Q>

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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. 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> 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.