pub struct JsonEncodeSession<'a, R = JsonResource, Q = usize>where
Q: ResourceQuantity,{ /* private fields */ }json only.Expand description
Mutable resource accounting for one JSON encoding operation.
Use Self::from_limits for a session that owns budgets created from
immutable limits, or Self::borrowing_output when the caller owns the
output and value budgets. Accepted output bytes are charged immediately;
value measurements are staged until JsonEncodeAttempt::commit.
§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::json::JsonEncodeLimits;
use qubit_budget::json::JsonEncodeSession;
use qubit_budget::json::JsonMeasurement;
let limits = JsonEncodeLimits::builder()
.max_output_bytes(4_usize)
.max_nodes(1_usize)
.build();
let mut session = JsonEncodeSession::from_limits(limits);
let mut attempt = session.begin_value();
attempt
.try_consume_output_bytes(4)
.expect("the output should fit");
attempt
.try_admit(JsonMeasurement::Null { depth: 1 })
.expect("the value should fit");
attempt.commit()?;
assert_eq!(session.output_budget().expect("output budget").used(), 4);Implementations§
Source§impl<'a, R, Q> JsonEncodeSession<'a, R, Q>where
R: Clone,
Q: ResourceQuantity,
impl<'a, R, Q> JsonEncodeSession<'a, R, Q>where
R: Clone,
Q: ResourceQuantity,
Sourcepub fn borrowing_value(value: &'a mut JsonValueBudget<R, Q>) -> Self
pub fn borrowing_value(value: &'a mut JsonValueBudget<R, Q>) -> Self
Sourcepub fn borrowing_output(
output: &'a mut ResourceBudget<R, Q>,
value: &'a mut JsonValueBudget<R, Q>,
) -> Self
pub fn borrowing_output( output: &'a mut ResourceBudget<R, Q>, value: &'a mut JsonValueBudget<R, Q>, ) -> Self
Sourcepub fn begin_value(&mut self) -> JsonEncodeAttempt<'_, R, Q>
pub fn begin_value(&mut self) -> JsonEncodeAttempt<'_, R, Q>
Starts accounting for one complete JSON value.
The returned attempt charges accepted output immediately, but publishes
staged JSON value accounting only after a successful commit. A
value-admission failure poisons commit; dropping the attempt rolls back
only the staged value state.
§Returns
Starts accounting for one complete JSON value.
Sourcepub fn output_budget(&self) -> Option<&ResourceBudget<R, Q>>
pub fn output_budget(&self) -> Option<&ResourceBudget<R, Q>>
Returns the output budget when configured.
§Returns
Returns the output budget when configured.
None indicates that the corresponding limit or budget dimension is
unconfigured.
Sourcepub fn max_output_bytes(&self) -> Option<Q>
pub fn max_output_bytes(&self) -> Option<Q>
Returns the configured output-byte maximum.
§Returns
Returns the configured output-byte maximum.
None indicates that the corresponding limit or budget dimension is
unconfigured.
Sourcepub fn value_budget(&self) -> &JsonValueBudget<R, Q>
pub fn value_budget(&self) -> &JsonValueBudget<R, Q>
Returns the value budget for read-only inspection.
§Returns
Returns the value budget for read-only inspection.