pub struct ValueWirePayloadRefV1<'a> { /* private fields */ }Expand description
Borrowed unversioned V1 payload for serialization without cloning.
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.
Use one of the fallible constructors or the corresponding TryFrom impl
to create a payload. The private representation prevents callers from
bypassing V1 validation by constructing an unchecked shape directly.
§Type Parameters
'a- Lifetime of the runtime payload borrowed for serialization.
§Examples
use qubit_value::{Value, ValueWirePayloadRefV1};
let value = Value::from(42_i32);
let payload = ValueWirePayloadRefV1::from_value(&value).unwrap();
let encoded = serde_json::to_string(&payload).unwrap();
assert_eq!(encoded, r#"{"scalar":{"int32":42}}"#);
let owned = qubit_value::ValueWirePayloadV1::try_from(Value::from(42_i32)).unwrap();
assert_eq!(encoded, serde_json::to_string(&owned).unwrap());Implementations§
Source§impl<'a> ValueWirePayloadRefV1<'a>
impl<'a> ValueWirePayloadRefV1<'a>
Sourcepub fn from_value(value: &'a Value) -> Result<Self, ValueWireEncodeError>
pub fn from_value(value: &'a Value) -> Result<Self, ValueWireEncodeError>
Borrows a scalar after validating the V1 wire representation constraints.
§Parameters
value- Scalar runtime value to validate and borrow.
§Returns
A borrowed V1 payload preserving the scalar shape.
§Errors
Returns ValueWireEncodeError::NonFiniteFloat for a non-finite float,
ValueWireEncodeError::BigDecimalScaleTooLarge for an unsupported
decimal scale, or ValueWireEncodeError::InstantYearOutOfRange when
an Instant’s UTC year is outside 0 through 9999.
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.
Sourcepub fn from_values(
values: &'a MultiValues,
) -> Result<Self, ValueWireEncodeError>
pub fn from_values( values: &'a MultiValues, ) -> Result<Self, ValueWireEncodeError>
Borrows a collection after validating the V1 wire representation constraints.
§Parameters
values- Homogeneous runtime collection to validate and borrow.
§Returns
A borrowed V1 payload preserving the collection shape.
§Errors
Returns ValueWireEncodeError::NonFiniteFloat for a non-finite float
element, ValueWireEncodeError::BigDecimalScaleTooLarge for an
unsupported decimal scale, or
ValueWireEncodeError::InstantYearOutOfRange when an Instant’s
UTC year is outside 0 through 9999.
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.
Sourcepub fn from_container(
value: &'a ValueContainer,
) -> Result<Self, ValueWireEncodeError>
pub fn from_container( value: &'a ValueContainer, ) -> Result<Self, ValueWireEncodeError>
Borrows an explicit shape after validating the V1 wire representation constraints.
§Parameters
value- Explicit scalar-or-collection value to validate and borrow.
§Returns
A borrowed V1 payload preserving the original shape.
§Errors
Returns ValueWireEncodeError::NonFiniteFloat for a non-finite float,
ValueWireEncodeError::BigDecimalScaleTooLarge for an unsupported
decimal scale, or ValueWireEncodeError::InstantYearOutOfRange when
an Instant’s UTC year is outside 0 through 9999.
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.
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 the borrowed V1 payload into a compact JSON vector.
§Returns
Compact UTF-8 JSON bytes for this unversioned payload.
§Errors
Returns ValueWireEncodeError when encoding exceeds the default
resource profile or Serde rejects the payload.
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 the borrowed V1 payload with explicit JSON resource limits.
§Parameters
limits- Resource limits enforced during JSON 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 the payload preflight or final
encoding exceeds limits, or Serde rejects the payload.
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 the borrowed 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 for resource, serialization, or writer
failures.
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 the borrowed V1 payload to a writer with explicit limits.
§Type Parameters
W- Destination writer type.
§Parameters
writer- Destination receiving the complete JSON payload.limits- Resource limits enforced during JSON 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 the payload preflight or final
encoding exceeds limits, Serde rejects the payload, or writer
rejects output.
Trait Implementations§
Source§impl Serialize for ValueWirePayloadRefV1<'_>
impl Serialize for ValueWirePayloadRefV1<'_>
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 borrowed unversioned V1 shape without cloning its source.
§Type Parameters
S- Serializer determining the output format and error type.
§Parameters
serializer- Destination serializer consumed by this operation.
§Returns
The serializer’s success value after emitting the scalar or collection.
§Errors
Returns S::Error if the serializer rejects the borrowed wire shape.
Source§impl<'a> TryFrom<&'a MultiValues> for ValueWirePayloadRefV1<'a>
impl<'a> TryFrom<&'a MultiValues> for ValueWirePayloadRefV1<'a>
Source§type Error = ValueWireEncodeError
type Error = ValueWireEncodeError
V1 representation validation failure; the borrowed input is unchanged.
Source§fn try_from(values: &'a MultiValues) -> Result<Self, Self::Error>
fn try_from(values: &'a MultiValues) -> Result<Self, Self::Error>
Borrows and validates a collection.
§Parameters
values- Homogeneous runtime collection to validate and borrow.
§Returns
A validated V1 payload borrowing the original input without cloning.
§Errors
Returns the representation validation errors documented by
Self::from_values.
Source§impl<'a> TryFrom<&'a Value> for ValueWirePayloadRefV1<'a>
impl<'a> TryFrom<&'a Value> for ValueWirePayloadRefV1<'a>
Source§type Error = ValueWireEncodeError
type Error = ValueWireEncodeError
V1 representation validation failure; the borrowed input is unchanged.
Source§fn try_from(value: &'a Value) -> Result<Self, Self::Error>
fn try_from(value: &'a Value) -> Result<Self, Self::Error>
Borrows and validates a scalar.
§Parameters
value- Scalar runtime value to validate and borrow.
§Returns
A validated V1 payload borrowing the original input without cloning.
§Errors
Returns the representation validation errors documented by
Self::from_value.
Source§impl<'a> TryFrom<&'a ValueContainer> for ValueWirePayloadRefV1<'a>
impl<'a> TryFrom<&'a ValueContainer> for ValueWirePayloadRefV1<'a>
Source§type Error = ValueWireEncodeError
type Error = ValueWireEncodeError
V1 representation validation failure; the borrowed input is unchanged.
Source§fn try_from(value: &'a ValueContainer) -> Result<Self, Self::Error>
fn try_from(value: &'a ValueContainer) -> Result<Self, Self::Error>
Borrows and validates an explicit shape.
§Parameters
value- Explicit scalar-or-collection value to validate and borrow.
§Returns
A validated V1 payload borrowing the original input without cloning.
§Errors
Returns the representation validation errors documented by
Self::from_container.