Skip to main content

ValueWirePayloadV1

Struct ValueWirePayloadV1 

Source
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

Source

pub fn default_json_decode_limits() -> JsonDecodeLimits

Available on crate feature json only.

Returns the default JSON resource profile for complete V1 payloads.

§Returns

Decode limits suitable for one standalone unversioned V1 payload.

Source

pub fn default_json_encode_limits() -> JsonEncodeLimits

Available on crate feature json only.

Returns the default JSON resource profile for complete V1 payloads.

§Returns

Encode limits suitable for one standalone unversioned V1 payload.

Source

pub fn decode_json_slice(input: &[u8]) -> Result<Self, ValueWireDecodeError>

Available on crate feature 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.

Source

pub fn decode_json_slice_with_limits( input: &[u8], limits: JsonDecodeLimits, ) -> Result<Self, ValueWireDecodeError>

Available on crate feature 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.

Source

pub const fn container(&self) -> &ValueContainer

Borrows the preserved runtime value.

§Returns

A shared reference to the preserved scalar-or-collection container.

Source

pub fn to_json_vec(&self) -> Result<Vec<u8>, ValueWireEncodeError>

Available on crate feature 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.

Source

pub fn to_json_vec_with_limits( &self, limits: JsonEncodeLimits, ) -> Result<Vec<u8>, ValueWireEncodeError>

Available on crate feature 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.

Source

pub fn to_json_writer<W>(&self, writer: W) -> Result<(), ValueWireEncodeError>
where W: Write,

Available on crate feature 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.

Source

pub fn to_json_writer_with_limits<W>( &self, writer: W, limits: JsonEncodeLimits, ) -> Result<(), ValueWireEncodeError>
where W: Write,

Available on crate feature 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.

Source

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

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ValueWirePayloadV1

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for ValueWirePayloadV1

Source§

impl From<ValueWirePayloadV1> for ValueContainer

Source§

fn from(value: ValueWirePayloadV1) -> Self

Extracts the shaped runtime value from a V1 payload without cloning.

§Parameters
  • value - Owned payload to consume.
§Returns

The preserved runtime container with its original scalar-or-collection shape.

Source§

impl Hash for ValueWirePayloadV1

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for ValueWirePayloadV1

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for ValueWirePayloadV1

Source§

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.

Source§

impl StructuralPartialEq for ValueWirePayloadV1

Source§

impl TryFrom<MultiValues> for ValueWirePayloadV1

Source§

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>

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

Source§

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>

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

Source§

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>

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.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoValueDefault<T> for T

Source§

fn into_value_default(self) -> T

Returns the owned value unchanged as the default.

§Returns

The input value, moved without cloning.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.