Silk

silk/json_codec

Profiles: aarch64-apple-darwin, aarch64-unknown-linux-gnu, aarch64-unknown-linux-gnu-no-libc, wasm32-unknown-unknown, x86_64-unknown-linux-gnu, x86_64-unknown-linux-gnu-no-libc.

Static JSON conversion contracts for typed values.

When to use

Use Serialize to write a value through the ambient Writer. Use Decode for owned values that need no allocation. Use Deserialize when a value can allocate.

Details

Each decode consumes one JSON value from a slice scanner. The caller checks for end of input. Integer, Boolean, and finite floating-point values support all three contracts. Nonfinite floating-point values fail with JsonError before any bytes are written. A hand-written aggregate witness can delegate to field witnesses through JsonCodec and the JSON object builders. Use the bounded JsonCodec.deserializeOne<T> helper when decoding a field.

Import as JsonCodec with import silk.json_codec { JsonCodec }.

Public declarations: 4.

Serialize

pub interface Serialize

A type that writes one JSON value without allocating JSON-owned storage.

Operation serialize

effect<'life0 & 'life1> fn serialize<'life0, 'life1>(self: &'life0 Self, options: &'life1 silk/json_output.JsonOptions) -> () ! JsonError | WriterError ? &mut Writer

Writes one value through the ambient Writer with the supplied format policy.

Decode

pub interface Decode

A type that decodes one owned JSON value without an Allocator requirement.

Operation decode

fn decode<'life0, 'life1>(scanner: &'life0 mut silk/json_scanner.JsonScanner<'life1>) -> silk/result.Result<Self, silk/json_scanner.JsonError>

Decodes one value and leaves enclosing array or object delimiters unread.

Deserialize

pub interface Deserialize

A type that decodes one owned JSON value and can allocate.

Operation deserialize

effect<'life0> fn deserialize<'life0, 'life1: 'life0>(scanner: &'life0 mut silk/json_scanner.JsonScanner<'life1>) -> Self ! JsonError | OutOfMemoryError ? &mut Allocator

Decodes one value and leaves enclosing array or object delimiters unread.

JsonCodec

pub struct JsonCodec

Operations that select static JSON witnesses for one value.

Associated function JsonCodec.decodeOne

pub fn decodeOne<T, 'life1, 'life2>(scanner: &'life1 mut silk/json_scanner.JsonScanner<'life2>) -> silk/result.Result<T, silk/json_scanner.JsonError>

Decodes one value without requiring an allocator.

Associated function JsonCodec.deserializeOne

pub effect<'life1> fn deserializeOne<T, 'life1, 'life2: 'life1>(scanner: &'life1 mut silk/json_scanner.JsonScanner<'life2>) -> T ! JsonError | OutOfMemoryError ? &mut Allocator

Deserializes one value with its declared allocator upper bound.

Associated function JsonCodec.writeOne

pub effect<'life1 & 'life2> fn writeOne<T: 'life1 & 'life2, 'life1, 'life2>(value: &'life1 T, options: &'life2 silk/json_output.JsonOptions) -> () ! JsonError | WriterError ? &mut Writer

Writes one value through its Serialize witness.

Implementation Serialize for bool

impl Serialize for bool

Operation serialize

serialize = bool.impl@0.serialize

Implementation Decode for bool

impl Decode for bool

Operation decode

decode = bool.impl@1.decode

Implementation Deserialize for bool

impl Deserialize for bool

Operation deserialize

deserialize = bool.impl@2.deserialize

Implementation Serialize for u8

impl Serialize for u8

Operation serialize

serialize = u8.impl@3.serialize

Implementation Decode for u8

impl Decode for u8

Operation decode

decode = u8.impl@4.decode

Implementation Deserialize for u8

impl Deserialize for u8

Operation deserialize

deserialize = u8.impl@5.deserialize

Implementation Serialize for u16

impl Serialize for u16

Operation serialize

serialize = u16.impl@6.serialize

Implementation Decode for u16

impl Decode for u16

Operation decode

decode = u16.impl@7.decode

Implementation Deserialize for u16

impl Deserialize for u16

Operation deserialize

deserialize = u16.impl@8.deserialize

Implementation Serialize for u32

impl Serialize for u32

Operation serialize

serialize = u32.impl@9.serialize

Implementation Decode for u32

impl Decode for u32

Operation decode

decode = u32.impl@10.decode

Implementation Deserialize for u32

impl Deserialize for u32

Operation deserialize

deserialize = u32.impl@11.deserialize

Implementation Serialize for u64

impl Serialize for u64

Operation serialize

serialize = u64.impl@12.serialize

Implementation Decode for u64

impl Decode for u64

Operation decode

decode = u64.impl@13.decode

Implementation Deserialize for u64

impl Deserialize for u64

Operation deserialize

deserialize = u64.impl@14.deserialize

Implementation Serialize for usize

impl Serialize for usize

Operation serialize

serialize = usize.impl@15.serialize

Implementation Decode for usize

impl Decode for usize

Operation decode

decode = usize.impl@16.decode

Implementation Deserialize for usize

impl Deserialize for usize

Operation deserialize

deserialize = usize.impl@17.deserialize

Implementation Serialize for i8

impl Serialize for i8

Operation serialize

serialize = i8.impl@18.serialize

Implementation Decode for i8

impl Decode for i8

Operation decode

decode = i8.impl@19.decode

Implementation Deserialize for i8

impl Deserialize for i8

Operation deserialize

deserialize = i8.impl@20.deserialize

Implementation Serialize for i16

impl Serialize for i16

Operation serialize

serialize = i16.impl@21.serialize

Implementation Decode for i16

impl Decode for i16

Operation decode

decode = i16.impl@22.decode

Implementation Deserialize for i16

impl Deserialize for i16

Operation deserialize

deserialize = i16.impl@23.deserialize

Implementation Serialize for i32

impl Serialize for i32

Operation serialize

serialize = i32.impl@24.serialize

Implementation Decode for i32

impl Decode for i32

Operation decode

decode = i32.impl@25.decode

Implementation Deserialize for i32

impl Deserialize for i32

Operation deserialize

deserialize = i32.impl@26.deserialize

Implementation Serialize for i64

impl Serialize for i64

Operation serialize

serialize = i64.impl@27.serialize

Implementation Decode for i64

impl Decode for i64

Operation decode

decode = i64.impl@28.decode

Implementation Deserialize for i64

impl Deserialize for i64

Operation deserialize

deserialize = i64.impl@29.deserialize

Implementation Serialize for isize

impl Serialize for isize

Operation serialize

serialize = isize.impl@30.serialize

Implementation Decode for isize

impl Decode for isize

Operation decode

decode = isize.impl@31.decode

Implementation Deserialize for isize

impl Deserialize for isize

Operation deserialize

deserialize = isize.impl@32.deserialize

Implementation Decode for f32

impl Decode for f32

Operation decode

decode = f32.impl@33.decode

Implementation Deserialize for f32

impl Deserialize for f32

Operation deserialize

deserialize = f32.impl@34.deserialize

Implementation Serialize for f32

impl Serialize for f32

Operation serialize

serialize = f32.impl@35.serialize

Implementation Decode for f64

impl Decode for f64

Operation decode

decode = f64.impl@36.decode

Implementation Deserialize for f64

impl Deserialize for f64

Operation deserialize

deserialize = f64.impl@37.deserialize

Implementation Serialize for f64

impl Serialize for f64

Operation serialize

serialize = f64.impl@38.serialize

Implementation Serialize for string<'a>

impl Serialize for string<'a>

Operation serialize

serialize = string.impl@39.serialize

Implementation Serialize for String

impl Serialize for String

Operation serialize

serialize = String.impl@40.serialize

Implementation Deserialize for String

impl Deserialize for String

Operation deserialize

deserialize = String.impl@41.deserialize

Implementation Serialize for silk/option.Option<T>

impl Serialize for silk/option.Option<T>

Operation serialize

serialize = Option.impl@42.serialize

Implementation Decode for silk/option.Option<T>

impl Decode for silk/option.Option<T>

Operation decode

decode = Option.impl@43.decode

Implementation Deserialize for silk/option.Option<T>

impl Deserialize for silk/option.Option<T>

Operation deserialize

deserialize = Option.impl@44.deserialize

Implementation Serialize for silk/vector.Vector<T>

impl Serialize for silk/vector.Vector<T>

Operation serialize

serialize = Vector.impl@45.serialize

Implementation Deserialize for silk/vector.Vector<T>

impl Deserialize for silk/vector.Vector<T>

Operation deserialize

deserialize = Vector.impl@46.deserialize

On this page

When to useDetailsSerializeOperation serializeDecodeOperation decodeDeserializeOperation deserializeJsonCodecAssociated function JsonCodec.decodeOneAssociated function JsonCodec.deserializeOneAssociated function JsonCodec.writeOneImplementation Serialize for boolOperation serializeImplementation Decode for boolOperation decodeImplementation Deserialize for boolOperation deserializeImplementation Serialize for u8Operation serializeImplementation Decode for u8Operation decodeImplementation Deserialize for u8Operation deserializeImplementation Serialize for u16Operation serializeImplementation Decode for u16Operation decodeImplementation Deserialize for u16Operation deserializeImplementation Serialize for u32Operation serializeImplementation Decode for u32Operation decodeImplementation Deserialize for u32Operation deserializeImplementation Serialize for u64Operation serializeImplementation Decode for u64Operation decodeImplementation Deserialize for u64Operation deserializeImplementation Serialize for usizeOperation serializeImplementation Decode for usizeOperation decodeImplementation Deserialize for usizeOperation deserializeImplementation Serialize for i8Operation serializeImplementation Decode for i8Operation decodeImplementation Deserialize for i8Operation deserializeImplementation Serialize for i16Operation serializeImplementation Decode for i16Operation decodeImplementation Deserialize for i16Operation deserializeImplementation Serialize for i32Operation serializeImplementation Decode for i32Operation decodeImplementation Deserialize for i32Operation deserializeImplementation Serialize for i64Operation serializeImplementation Decode for i64Operation decodeImplementation Deserialize for i64Operation deserializeImplementation Serialize for isizeOperation serializeImplementation Decode for isizeOperation decodeImplementation Deserialize for isizeOperation deserializeImplementation Decode for f32Operation decodeImplementation Deserialize for f32Operation deserializeImplementation Serialize for f32Operation serializeImplementation Decode for f64Operation decodeImplementation Deserialize for f64Operation deserializeImplementation Serialize for f64Operation serializeImplementation Serialize for string<'a>Operation serializeImplementation Serialize for StringOperation serializeImplementation Deserialize for StringOperation deserializeImplementation Serialize for silk/option.Option<T>Operation serializeImplementation Decode for silk/option.Option<T>Operation decodeImplementation Deserialize for silk/option.Option<T>Operation deserializeImplementation Serialize for silk/vector.Vector<T>Operation serializeImplementation Deserialize for silk/vector.Vector<T>Operation deserialize