pub struct ValueWirePayloadV1 { /* private fields */ }Expand description
Typed V1 scalar-or-collection payload without an enclosing version field.
Runtime JSON numbers must round trip to the same serde_json::Number under
the strict qubit-json number model. A number that would change identity
returns the JSON-gated JsonNumberNotRoundTrippable error; the error does
not expose the number text.
Deserialization is intentionally available through
crate::ValueWirePayloadV1Seed, which lets a bounded decoder control the
complete input and structure.
§Examples
use qubit_value::{Value, ValueWirePayloadV1};
let payload = ValueWirePayloadV1::try_from(Value::from(42_i32)).unwrap();
let encoded = serde_json::to_string(&payload).unwrap();
assert_eq!(encoded, r#"{"scalar":{"int32":42}}"#);
assert_eq!(payload.into_container().get_first::<i32>().unwrap(), 42);Implementations§
Source§impl ValueWirePayloadV1
impl ValueWirePayloadV1
Sourcepub fn default_json_decode_limits() -> JsonDecodeLimits
Available on crate feature json only.
pub fn default_json_decode_limits() -> JsonDecodeLimits
json only.Returns the default JSON resource profile for complete V1 payloads.
§Returns
Decode limits suitable for one standalone unversioned V1 payload.
Sourcepub fn default_json_encode_limits() -> JsonEncodeLimits
Available on crate feature json only.
pub fn default_json_encode_limits() -> JsonEncodeLimits
json only.Returns the default JSON resource profile for complete V1 payloads.
§Returns
Encode limits suitable for one standalone unversioned V1 payload.
Sourcepub fn decode_json_slice(input: &[u8]) -> Result<Self, ValueWireDecodeError>
Available on crate feature json only.
pub fn decode_json_slice(input: &[u8]) -> Result<Self, ValueWireDecodeError>
json only.Decodes a complete V1 JSON payload using default resource limits.
Prefer this entry point when the payload itself is the complete untrusted document. Embedded protocols should share one budget across all payloads in their complete document.
§Parameters
input- Complete UTF-8 JSON payload to decode.
§Returns
The decoded unversioned V1 payload.
§Errors
Returns a resource error when the input or decoded structure exceeds the
default limits, ValueWireDecodeError::Syntax for JSON syntax
failures, or ValueWireDecodeError::InvalidJson for invalid UTF-8
or a payload that does not satisfy the V1 shape, type, or value
constraints.
Sourcepub fn decode_json_slice_with_limits(
input: &[u8],
limits: JsonDecodeLimits,
) -> Result<Self, ValueWireDecodeError>
Available on crate feature json only.
pub fn decode_json_slice_with_limits( input: &[u8], limits: JsonDecodeLimits, ) -> Result<Self, ValueWireDecodeError>
json only.Decodes a complete V1 JSON payload using explicit resource limits.
§Parameters
input- Complete UTF-8 JSON payload to decode.limits- Resource limits enforced during decoding.
§Returns
The decoded unversioned V1 payload.
§Errors
Returns a resource error when input or its decoded structure exceeds
limits, ValueWireDecodeError::Syntax for JSON syntax failures, or
ValueWireDecodeError::InvalidJson for invalid UTF-8 or a payload
that does not satisfy the V1 shape, type, or value constraints.
Sourcepub const fn container(&self) -> &ValueContainer
pub const fn container(&self) -> &ValueContainer
Borrows the preserved runtime value.
§Returns
A shared reference to the preserved scalar-or-collection container.
Sourcepub fn to_json_vec(&self) -> Result<Vec<u8>, ValueWireEncodeError>
Available on crate feature json only.
pub fn to_json_vec(&self) -> Result<Vec<u8>, ValueWireEncodeError>
json only.Encodes this V1 payload into a compact JSON vector with default limits.
§Returns
Compact UTF-8 JSON bytes for this unversioned payload.
§Errors
Returns ValueWireEncodeError::Budget when the payload exceeds the
default JSON resource profile.
Sourcepub fn to_json_vec_with_limits(
&self,
limits: JsonEncodeLimits,
) -> Result<Vec<u8>, ValueWireEncodeError>
Available on crate feature json only.
pub fn to_json_vec_with_limits( &self, limits: JsonEncodeLimits, ) -> Result<Vec<u8>, ValueWireEncodeError>
json only.Encodes this V1 payload into a bounded compact JSON vector.
§Parameters
limits- Resource limits enforced during encoding.
§Returns
Compact UTF-8 JSON bytes for this unversioned payload.
Runs a conservative payload preflight before encoding, then enforces
limits authoritatively while encoding. The preflight may report a
lower-bound budget error and does not bound every preparation
allocation.
§Errors
Returns ValueWireEncodeError when preflight or final encoding
exceeds limits, or the payload cannot be serialized.
Sourcepub fn to_json_writer<W>(&self, writer: W) -> Result<(), ValueWireEncodeError>where
W: Write,
Available on crate feature json only.
pub fn to_json_writer<W>(&self, writer: W) -> Result<(), ValueWireEncodeError>where
W: Write,
json only.Encodes this V1 payload to a writer with default limits.
§Type Parameters
W- Destination writer type.
§Parameters
writer- Destination receiving the complete JSON payload.
§Returns
Ok(()) after the complete payload is written.
The complete payload is buffered and admitted before this method writes its bytes to the destination. Preflight, serialization, or budget rejection does not write this payload. An I/O error may leave an accepted prefix in the writer; do not blindly retry a complete payload on the same destination.
This method does not explicitly flush the writer. Success means the
writer accepted all payload bytes, not that they were flushed,
persisted, or received by a remote peer. Pass &mut writer to
retain ownership of a buffered writer, then call flush() and
handle its error separately. Passing an owned writer may invoke that
writer’s drop behavior; errors from an implicit drop-time flush are
not returned by this method.
§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,
Available on crate feature json only.
pub fn to_json_writer_with_limits<W>(
&self,
writer: W,
limits: JsonEncodeLimits,
) -> Result<(), ValueWireEncodeError>where
W: Write,
json only.Encodes this V1 payload to a writer after enforcing JSON budgets.
§Type Parameters
W- Destination writer type.
§Parameters
writer- Destination receiving the complete JSON payload.limits- Resource limits enforced during encoding.
§Returns
Ok(()) after the complete payload is written.
Runs a conservative payload preflight before encoding, then enforces
limits authoritatively while encoding. The preflight may report a
lower-bound budget error and does not bound every preparation
allocation.
The complete payload is buffered and admitted before this method writes its bytes to the destination. Preflight, serialization, or budget rejection does not write this payload. An I/O error may leave an accepted prefix in the writer; do not blindly retry a complete payload on the same destination.
This method does not explicitly flush the writer. Success means the
writer accepted all payload bytes, not that they were flushed,
persisted, or received by a remote peer. Pass &mut writer to
retain ownership of a buffered writer, then call flush() and
handle its error separately. Passing an owned writer may invoke that
writer’s drop behavior; errors from an implicit drop-time flush are
not returned by this method.
§Errors
Returns ValueWireEncodeError when preflight or final encoding
exceeds limits, the payload cannot be serialized, or writer rejects
output.
Sourcepub fn into_container(self) -> ValueContainer
pub fn into_container(self) -> ValueContainer
Consumes this payload and returns its runtime value.
§Returns
The preserved scalar-or-collection container.
Trait Implementations§
Source§impl Clone for ValueWirePayloadV1
impl Clone for ValueWirePayloadV1
Source§impl Debug for ValueWirePayloadV1
impl Debug for ValueWirePayloadV1
impl Eq for ValueWirePayloadV1
Source§impl From<ValueWirePayloadV1> for ValueContainer
impl From<ValueWirePayloadV1> for ValueContainer
Source§impl Hash for ValueWirePayloadV1
impl Hash for ValueWirePayloadV1
Source§impl PartialEq for ValueWirePayloadV1
impl PartialEq for ValueWirePayloadV1
Source§impl Serialize for ValueWirePayloadV1
impl Serialize for ValueWirePayloadV1
Source§fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
Serializes the unversioned V1 shape through borrowed runtime values.
§Type Parameters
S- Serde serializer selecting the output format and error type.
§Parameters
serializer- Destination serializer receiving the scalar-or-collection shape.
§Returns
The serializer’s success value after emitting the complete payload.
§Errors
Returns the serializer’s error if the destination rejects the shape or values.
impl StructuralPartialEq for ValueWirePayloadV1
Source§impl TryFrom<MultiValues> for ValueWirePayloadV1
impl TryFrom<MultiValues> for ValueWirePayloadV1
Source§type Error = ValueWireEncodeError
type Error = ValueWireEncodeError
Validation failure when the runtime value cannot satisfy the V1 wire contract.
Source§fn try_from(value: MultiValues) -> Result<Self, Self::Error>
fn try_from(value: MultiValues) -> Result<Self, Self::Error>
Validates a collection for use in a V1 payload.
§Parameters
value- Homogeneous collection to validate and take ownership of.
§Returns
A validated owned unversioned V1 payload.
§Errors
Returns ValueWireEncodeError::NonFiniteFloat for a non-finite
float element, ValueWireEncodeError::BigDecimalScaleTooLarge for
an element whose decimal exponent is outside V1’s supported range, or
ValueWireEncodeError::InstantYearOutOfRange for an instant outside
the supported UTC year range.
With the json feature, returns JsonNumberNotRoundTrippable if any
runtime JSON number in the collection, including a nested number,
cannot preserve its serde_json::Number identity under the V1 number
model.
Source§impl TryFrom<Value> for ValueWirePayloadV1
impl TryFrom<Value> for ValueWirePayloadV1
Source§type Error = ValueWireEncodeError
type Error = ValueWireEncodeError
Validation failure when the runtime value cannot satisfy the V1 wire contract.
Source§fn try_from(value: Value) -> Result<Self, Self::Error>
fn try_from(value: Value) -> Result<Self, Self::Error>
Validates a scalar for use in a V1 payload.
§Parameters
value- Scalar to validate and take ownership of.
§Returns
A validated owned unversioned V1 payload.
§Errors
Returns ValueWireEncodeError::NonFiniteFloat for a non-finite
float, ValueWireEncodeError::BigDecimalScaleTooLarge for a decimal
whose exponent is outside V1’s supported range, or
ValueWireEncodeError::InstantYearOutOfRange for an instant outside
the supported UTC year range.
With the json feature, returns JsonNumberNotRoundTrippable if a
runtime JSON number, including a nested number, cannot preserve its
serde_json::Number identity under the V1 number model.
Source§impl TryFrom<ValueContainer> for ValueWirePayloadV1
impl TryFrom<ValueContainer> for ValueWirePayloadV1
Source§type Error = ValueWireEncodeError
type Error = ValueWireEncodeError
Validation failure when the runtime value cannot satisfy the V1 wire contract.
Source§fn try_from(value: ValueContainer) -> Result<Self, Self::Error>
fn try_from(value: ValueContainer) -> Result<Self, Self::Error>
Validates an explicitly shaped value for use in a V1 payload.
§Parameters
value- Scalar-or-collection container whose shape and ownership are preserved.
§Returns
A validated owned unversioned V1 payload.
§Errors
Returns ValueWireEncodeError::NonFiniteFloat for a non-finite
float, ValueWireEncodeError::BigDecimalScaleTooLarge for a decimal
whose exponent is outside V1’s supported range, or
ValueWireEncodeError::InstantYearOutOfRange for an instant outside
the supported UTC year range.
With the json feature, returns JsonNumberNotRoundTrippable if a
runtime JSON number in either the scalar or collection shape, including
a nested number, cannot preserve its serde_json::Number identity
under the V1 number model.