pub struct CapabilityBudget {
pub memory_bytes: Option<u64>,
pub cpu_units: Option<u64>,
pub io_bytes: Option<u64>,
pub cleanup_budget: Option<Budget>,
pub artifact_bytes: Option<u64>,
}Expand description
Explicit resource envelope carried by capability contexts and regions.
None means no explicit envelope for that dimension. Admission can still
fail closed by requiring dimensions with CapabilityBudgetRequirements.
Child envelopes inherit parent limits and can only tighten them.
Fields§
§memory_bytes: Option<u64>Resident memory envelope in bytes.
cpu_units: Option<u64>Abstract CPU unit envelope.
io_bytes: Option<u64>I/O byte envelope.
cleanup_budget: Option<Budget>Cleanup/drain budget envelope.
artifact_bytes: Option<u64>Artifact-emission byte envelope.
Implementations§
Source§impl CapabilityBudget
impl CapabilityBudget
Sourcepub const UNSPECIFIED: Self
pub const UNSPECIFIED: Self
No explicit resource envelopes.
Sourcepub const fn with_memory_bytes(self, bytes: u64) -> Self
pub const fn with_memory_bytes(self, bytes: u64) -> Self
Sets the memory envelope in bytes.
Sourcepub const fn with_cpu_units(self, units: u64) -> Self
pub const fn with_cpu_units(self, units: u64) -> Self
Sets the CPU envelope in abstract units.
Sourcepub const fn with_io_bytes(self, bytes: u64) -> Self
pub const fn with_io_bytes(self, bytes: u64) -> Self
Sets the I/O envelope in bytes.
Sourcepub const fn with_cleanup_budget(self, budget: Budget) -> Self
pub const fn with_cleanup_budget(self, budget: Budget) -> Self
Sets the cleanup/drain budget envelope.
Sourcepub const fn with_artifact_bytes(self, bytes: u64) -> Self
pub const fn with_artifact_bytes(self, bytes: u64) -> Self
Sets the artifact-emission envelope in bytes.
Sourcepub fn meet(self, child: Self) -> Self
pub fn meet(self, child: Self) -> Self
Combines parent and child capability budgets, keeping the tightest envelope for each resource dimension.
Sourcepub fn plan_child(
self,
child: Self,
requirements: CapabilityBudgetRequirements,
) -> Result<Self, CapabilityBudgetRefusal>
pub fn plan_child( self, child: Self, requirements: CapabilityBudgetRequirements, ) -> Result<Self, CapabilityBudgetRefusal>
Computes the effective child envelope and rejects if required dimensions are absent or exhausted.
Use this before admitting a region/task group that needs explicit
resource envelopes. On success the returned budget is the value to carry
forward in the child Cx or region record.
Sourcepub fn validate(
self,
requirements: CapabilityBudgetRequirements,
) -> Result<(), CapabilityBudgetRefusal>
pub fn validate( self, requirements: CapabilityBudgetRequirements, ) -> Result<(), CapabilityBudgetRefusal>
Validates this budget against required resource dimensions.
Trait Implementations§
Source§impl Clone for CapabilityBudget
impl Clone for CapabilityBudget
Source§fn clone(&self) -> CapabilityBudget
fn clone(&self) -> CapabilityBudget
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for CapabilityBudget
Source§impl Debug for CapabilityBudget
impl Debug for CapabilityBudget
Source§impl Default for CapabilityBudget
impl Default for CapabilityBudget
Source§fn default() -> CapabilityBudget
fn default() -> CapabilityBudget
impl Eq for CapabilityBudget
Source§impl PartialEq for CapabilityBudget
impl PartialEq for CapabilityBudget
impl StructuralPartialEq for CapabilityBudget
Auto Trait Implementations§
impl Freeze for CapabilityBudget
impl RefUnwindSafe for CapabilityBudget
impl Send for CapabilityBudget
impl Sync for CapabilityBudget
impl Unpin for CapabilityBudget
impl UnsafeUnpin for CapabilityBudget
impl UnwindSafe for CapabilityBudget
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.