Skip to main content

ValueWirePayloadRefV1

Struct ValueWirePayloadRefV1 

Source
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>

Source

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.

Source

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.

Source

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.

Source

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

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

Source

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

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

Source

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

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

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 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<'_>

Source§

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>

Source§

type Error = ValueWireEncodeError

V1 representation validation failure; the borrowed input is unchanged.

Source§

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>

Source§

type Error = ValueWireEncodeError

V1 representation validation failure; the borrowed input is unchanged.

Source§

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>

Source§

type Error = ValueWireEncodeError

V1 representation validation failure; the borrowed input is unchanged.

Source§

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.

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> 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, 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.