pub enum JsonEncodeErrorSource<R, Q = usize>{
Budget(MeasuredBudgetError<R, Q>),
InvalidRawJson(JsonSyntaxError),
Serialize(JsonSerializationError),
Write(Error),
}Expand description
An owned source extracted from a strict JSON encoding failure.
This enum lets callers move an underlying failure into another error model with one exhaustive match. It avoids checking an error kind and then using a separate optional extractor whose success depends on that prior check.
§Type Parameters
R- Resource identity attached to budget failures.Q- Quantity representation attached to budget failures.
§Examples
use qubit_budget::json::JsonResource;
use qubit_json::encode::JsonEncodeErrorSource;
use qubit_json::encode::JsonEncoder;
let mut encoder = JsonEncoder::unlimited();
let error = encoder
.to_vec(&u128::MAX)
.expect_err("wide integer must not serialize as JSON");
match error.into_source() {
JsonEncodeErrorSource::Serialize(source) => {
assert!(source.is_number_error());
}
source => panic!("unexpected encoding source: {source:?}"),
}Variants§
Budget(MeasuredBudgetError<R, Q>)
Resource accounting rejected the encoded work or output.
InvalidRawJson(JsonSyntaxError)
A serde_json::value::RawValue payload was not strict JSON.
Serialize(JsonSerializationError)
Serde rejected the source value during strict serialization.
Write(Error)
The destination writer rejected an output operation.
Trait Implementations§
Auto Trait Implementations§
impl<R, Q = usize> !RefUnwindSafe for JsonEncodeErrorSource<R, Q>
impl<R, Q = usize> !UnwindSafe for JsonEncodeErrorSource<R, Q>
impl<R, Q> Freeze for JsonEncodeErrorSource<R, Q>where
MeasuredBudgetError<R, Q>: Freeze,
impl<R, Q> Send for JsonEncodeErrorSource<R, Q>where
MeasuredBudgetError<R, Q>: Send,
impl<R, Q> Sync for JsonEncodeErrorSource<R, Q>where
MeasuredBudgetError<R, Q>: Sync,
impl<R, Q> Unpin for JsonEncodeErrorSource<R, Q>where
MeasuredBudgetError<R, Q>: Unpin,
impl<R, Q> UnsafeUnpin for JsonEncodeErrorSource<R, Q>where
MeasuredBudgetError<R, Q>: UnsafeUnpin,
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