Skip to main content

JsonStringValueCodec

Struct JsonStringValueCodec 

Source
pub struct JsonStringValueCodec<T> { /* private fields */ }
Expand description

Encodes and decodes one serializable value through UTF-8 JSON strings.

This type combines JsonStringValueEncoder and JsonStringValueDecoder for registry-backed or bidirectional call sites. It holds no state between calls, so it is Copy and Default, and encoding and decoding can share one value through ValueEncoder and ValueDecoder.

§Type Parameters

  • T: Value type serialized to a JSON string and recovered from it.

§Examples

use qubit_codec::JsonStringValueCodec;
use qubit_codec::ValueDecoder;
use qubit_codec::ValueEncoder;

let mut codec = JsonStringValueCodec::<String>::new();
assert_eq!(codec.encode(&"hello".to_string()).unwrap(), r#""hello""#.to_string());
assert_eq!(codec.decode(r#""hello""#).unwrap(), "hello");

Implementations§

Source§

impl<T> JsonStringValueCodec<T>

Source

pub const fn new() -> Self

Creates a bidirectional JSON string codec for values of type T.

§Returns

Returns a stateless codec bound to values of type T.

Trait Implementations§

Source§

impl<T: Clone> Clone for JsonStringValueCodec<T>

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<T: Copy> Copy for JsonStringValueCodec<T>

Source§

impl<T: Debug> Debug for JsonStringValueCodec<T>

Source§

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

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

impl<T: Default> Default for JsonStringValueCodec<T>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<T> ValueDecoder<str> for JsonStringValueCodec<T>

Source§

type Error = Error

JSON syntax or target-value deserialization failure.

Source§

type Output = T

Owned value deserialized independently of the input string lifetime.

Source§

fn decode(&mut self, input: &str) -> Result<Self::Output, Self::Error>

Deserializes input from a JSON string.

The codec holds no state, so this delegates to a freshly created JsonStringValueDecoder and self stays usable for further calls.

§Parameters
  • input: Complete JSON value to deserialize.
§Returns

Returns an owned T deserialized independently of input’s lifetime.

§Errors

Returns serde_json::Error when input is not valid JSON or when a valid JSON document does not match the shape required by T.

Source§

impl<T> ValueEncoder<T> for JsonStringValueCodec<T>
where T: Serialize,

Source§

type Error = Error

Serialization failure reported by Serde JSON.

Source§

type Output = String

Newly allocated UTF-8 JSON string owned by the caller.

Source§

fn encode(&mut self, input: &T) -> Result<Self::Output, Self::Error>

Serializes input into a JSON string.

The codec holds no state, so this delegates to a freshly created JsonStringValueEncoder and self stays usable for further calls.

§Parameters
  • input: Value to serialize as JSON.
§Returns

Returns the serialized JSON text as an owned UTF-8 string.

§Errors

Returns serde_json::Error when input cannot be serialized to JSON, including when a custom Serialize implementation fails or when the value contains a map key that is not a string.

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