pub struct BudgetedStringWriter<'a, R, Q = u64>where
Q: ResourceQuantity,{ /* private fields */ }Expand description
Collects a UTF-8 string while checking a finite byte budget incrementally.
The writer is constructed and committed by
ResourceBudget::try_write_string. A failed render drops the buffered
prefix and leaves the budget unchanged.
Use Self::as_fmt for formatting APIs or Self::as_io for
byte-oriented I/O. The returned adapter borrows this writer, so the render
callback must finish using it before returning.
§Type Parameters
R- Caller-defined resource identity retained by limits and errors.Q- Exact unsigned quantity used for measurements and accounting.
§Examples
use std::fmt::Write as _;
use qubit_budget::ResourceBudget;
let mut budget = ResourceBudget::new("response bytes", 16_u64);
let output = budget
.try_write_string(|writer| {
let mut formatted = writer.as_fmt();
write!(&mut formatted, "status={}", 200)
})
.expect("the rendered response should fit");
assert_eq!(output, "status=200");
assert_eq!(budget.used(), 10);Implementations§
Source§impl<'a, R, Q> BudgetedStringWriter<'a, R, Q>where
R: Clone,
Q: ResourceQuantity,
impl<'a, R, Q> BudgetedStringWriter<'a, R, Q>where
R: Clone,
Q: ResourceQuantity,
Auto Trait Implementations§
impl<'a, R, Q> Freeze for BudgetedStringWriter<'a, R, Q>
impl<'a, R, Q> RefUnwindSafe for BudgetedStringWriter<'a, R, Q>
impl<'a, R, Q> Send for BudgetedStringWriter<'a, R, Q>
impl<'a, R, Q> Sync for BudgetedStringWriter<'a, R, Q>
impl<'a, R, Q> Unpin for BudgetedStringWriter<'a, R, Q>
impl<'a, R, Q> UnsafeUnpin for BudgetedStringWriter<'a, R, Q>
impl<'a, R, Q> UnwindSafe for BudgetedStringWriter<'a, R, Q>
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
Mutably borrows from an owned value. Read more