pub struct ValueWireV1 { /* private fields */ }Expand description
Stable version-one wire DTO for a scalar or homogeneous collection.
For a given serializer and value, output is byte-stable with canonical field and object-key order, including recursively nested JSON objects. V1 is closed: existing tags, shapes, and payload representations cannot change, and future runtime data types require a new wire version instead of extending V1.
Deserialization is intentionally available through
crate::ValueWireV1Seed, which lets a bounded decoder control the
complete input and structure.
§Examples
use std::convert::TryFrom;
use qubit_value::{Value, ValueWireV1};
let _wire = ValueWireV1::try_from(Value::from(42_i32)).unwrap();Implementations§
Source§impl ValueWireV1
impl ValueWireV1
Sourcepub const VERSION: u8 = VALUE_WIRE_V1_VERSION
pub const VERSION: u8 = VALUE_WIRE_V1_VERSION
Numeric version emitted and accepted by this DTO.
Sourcepub const fn new(value: ValueWirePayloadV1) -> Self
pub const fn new(value: ValueWirePayloadV1) -> Self
Sourcepub fn default_json_decode_limits() -> JsonDecodeLimits
pub fn default_json_decode_limits() -> JsonDecodeLimits
Returns the default JSON resource profile for complete V1 documents.
§Returns
Decode limits suitable for one standalone V1 envelope.
Sourcepub fn default_json_encode_limits() -> JsonEncodeLimits
pub fn default_json_encode_limits() -> JsonEncodeLimits
Returns the default JSON resource profile for encoding V1 documents.
§Returns
Encode limits suitable for one standalone V1 envelope.
Sourcepub fn decode_json_slice(input: &[u8]) -> Result<Self, ValueWireDecodeError>
pub fn decode_json_slice(input: &[u8]) -> Result<Self, ValueWireDecodeError>
Decodes a V1 JSON wire value using the default structural limits.
The complete input length and decoded structure are checked before the
value is returned. Embedded protocols should share one
qubit_budget::json::JsonDecodeSession across their complete
document.
§Parameters
input- Complete UTF-8 JSON document to decode.
§Returns
The decoded V1 wire DTO.
§Errors
Returns a limit error when the input or decoded structure is too large,
ValueWireDecodeError::UnsupportedVersion when the envelope declares
another supported-width version, or
ValueWireDecodeError::Syntax when the input is not one valid JSON
document, or ValueWireDecodeError::InvalidJson when valid JSON
cannot be decoded as a V1 wire value.
Sourcepub fn decode_json_slice_with_limits(
input: &[u8],
limits: JsonDecodeLimits,
) -> Result<Self, ValueWireDecodeError>
pub fn decode_json_slice_with_limits( input: &[u8], limits: JsonDecodeLimits, ) -> Result<Self, ValueWireDecodeError>
Decodes a V1 JSON wire value using explicit structural limits.
The complete input length and decoded structure are checked before the
value is returned. Embedded values should be checked through the outer
protocol’s shared qubit_budget::json::JsonDecodeSession.
§Parameters
input- Complete UTF-8 JSON document to decode.limits- Shared encoded-input and structural limits.
§Returns
The decoded V1 wire DTO.
§Errors
Returns a limit error when input or its decoded structure exceeds
limits, ValueWireDecodeError::UnsupportedVersion when the envelope
declares another supported-width version,
ValueWireDecodeError::Syntax when the input is not one valid JSON
document, or ValueWireDecodeError::InvalidJson when valid JSON
cannot be decoded as a V1 wire value.
Sourcepub fn to_json_vec(&self) -> Result<Vec<u8>, ValueWireEncodeError>
pub fn to_json_vec(&self) -> Result<Vec<u8>, ValueWireEncodeError>
Encodes this V1 document into a compact JSON vector with default limits.
§Returns
The encoded complete V1 document.
§Errors
Returns ValueWireEncodeError::Budget when the document exceeds the
default JSON resource profile.
Sourcepub fn to_json_vec_with_limits(
&self,
limits: JsonEncodeLimits,
) -> Result<Vec<u8>, ValueWireEncodeError>
pub fn to_json_vec_with_limits( &self, limits: JsonEncodeLimits, ) -> Result<Vec<u8>, ValueWireEncodeError>
Encodes this V1 document into a bounded compact JSON vector.
§Parameters
limits- Resource limits enforced during encoding.
§Returns
Compact UTF-8 JSON bytes for the complete V1 document.
§Errors
Returns ValueWireEncodeError when encoding exceeds limits or the
document cannot be serialized.
Sourcepub fn to_json_writer<W>(&self, writer: W) -> Result<(), ValueWireEncodeError>where
W: Write,
pub fn to_json_writer<W>(&self, writer: W) -> Result<(), ValueWireEncodeError>where
W: Write,
Encodes this V1 document to a writer with default limits.
§Type Parameters
W- Destination writer type.
§Parameters
writer- Destination receiving the complete JSON document.
§Returns
Ok(()) after the complete document is written.
§Errors
Returns ValueWireEncodeError::Budget for resource-limit failures or
ValueWireEncodeError::Io when writer rejects output.
Sourcepub fn to_json_writer_with_limits<W>(
&self,
writer: W,
limits: JsonEncodeLimits,
) -> Result<(), ValueWireEncodeError>where
W: Write,
pub fn to_json_writer_with_limits<W>(
&self,
writer: W,
limits: JsonEncodeLimits,
) -> Result<(), ValueWireEncodeError>where
W: Write,
Encodes this V1 document to a writer after enforcing JSON budgets.
§Type Parameters
W- Destination writer type.
§Parameters
writer- Destination receiving the complete JSON document.limits- Resource limits enforced during encoding.
§Returns
Ok(()) after the complete document is written.
§Errors
Returns ValueWireEncodeError when encoding exceeds limits, the
document cannot be serialized, or writer rejects output.
Sourcepub const fn container(&self) -> &ValueContainer
pub const fn container(&self) -> &ValueContainer
Returns the runtime container represented by this DTO.
§Returns
A shared reference to the preserved runtime container.
Sourcepub fn into_container(self) -> ValueContainer
pub fn into_container(self) -> ValueContainer
Trait Implementations§
Source§impl Clone for ValueWireV1
impl Clone for ValueWireV1
Source§fn clone(&self) -> ValueWireV1
fn clone(&self) -> ValueWireV1
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ValueWireV1
impl Debug for ValueWireV1
impl Eq for ValueWireV1
Source§impl From<ValueWireV1> for ValueContainer
impl From<ValueWireV1> for ValueContainer
Source§fn from(value: ValueWireV1) -> Self
fn from(value: ValueWireV1) -> Self
Unwraps the runtime container from a V1 DTO.
Source§impl Hash for ValueWireV1
impl Hash for ValueWireV1
Source§impl PartialEq for ValueWireV1
impl PartialEq for ValueWireV1
Source§impl Serialize for ValueWireV1
impl Serialize for ValueWireV1
impl StructuralPartialEq for ValueWireV1
Source§impl TryFrom<MultiValues> for ValueWireV1
impl TryFrom<MultiValues> for ValueWireV1
Source§fn try_from(values: MultiValues) -> Result<Self, Self::Error>
fn try_from(values: MultiValues) -> Result<Self, Self::Error>
Wraps a runtime collection in a V1 DTO.
Source§type Error = ValueWireEncodeError
type Error = ValueWireEncodeError
Source§impl TryFrom<Value> for ValueWireV1
impl TryFrom<Value> for ValueWireV1
Source§impl TryFrom<ValueContainer> for ValueWireV1
impl TryFrom<ValueContainer> for ValueWireV1
Source§fn try_from(value: ValueContainer) -> Result<Self, Self::Error>
fn try_from(value: ValueContainer) -> Result<Self, Self::Error>
Wraps an explicit runtime shape in a V1 DTO.