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 SerializeA 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 WriterWrites one value through the ambient Writer with the supplied format policy.
Decode
pub interface DecodeA 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 DeserializeA 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 AllocatorDecodes one value and leaves enclosing array or object delimiters unread.
JsonCodec
pub struct JsonCodecOperations 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 AllocatorDeserializes 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 WriterWrites one value through its Serialize witness.
Implementation Serialize for bool
impl Serialize for boolOperation serialize
serialize = bool.impl@0.serializeImplementation Decode for bool
impl Decode for boolOperation decode
decode = bool.impl@1.decodeImplementation Deserialize for bool
impl Deserialize for boolOperation deserialize
deserialize = bool.impl@2.deserializeImplementation Serialize for u8
impl Serialize for u8Operation serialize
serialize = u8.impl@3.serializeImplementation Decode for u8
impl Decode for u8Operation decode
decode = u8.impl@4.decodeImplementation Deserialize for u8
impl Deserialize for u8Operation deserialize
deserialize = u8.impl@5.deserializeImplementation Serialize for u16
impl Serialize for u16Operation serialize
serialize = u16.impl@6.serializeImplementation Decode for u16
impl Decode for u16Operation decode
decode = u16.impl@7.decodeImplementation Deserialize for u16
impl Deserialize for u16Operation deserialize
deserialize = u16.impl@8.deserializeImplementation Serialize for u32
impl Serialize for u32Operation serialize
serialize = u32.impl@9.serializeImplementation Decode for u32
impl Decode for u32Operation decode
decode = u32.impl@10.decodeImplementation Deserialize for u32
impl Deserialize for u32Operation deserialize
deserialize = u32.impl@11.deserializeImplementation Serialize for u64
impl Serialize for u64Operation serialize
serialize = u64.impl@12.serializeImplementation Decode for u64
impl Decode for u64Operation decode
decode = u64.impl@13.decodeImplementation Deserialize for u64
impl Deserialize for u64Operation deserialize
deserialize = u64.impl@14.deserializeImplementation Serialize for usize
impl Serialize for usizeOperation serialize
serialize = usize.impl@15.serializeImplementation Decode for usize
impl Decode for usizeOperation decode
decode = usize.impl@16.decodeImplementation Deserialize for usize
impl Deserialize for usizeOperation deserialize
deserialize = usize.impl@17.deserializeImplementation Serialize for i8
impl Serialize for i8Operation serialize
serialize = i8.impl@18.serializeImplementation Decode for i8
impl Decode for i8Operation decode
decode = i8.impl@19.decodeImplementation Deserialize for i8
impl Deserialize for i8Operation deserialize
deserialize = i8.impl@20.deserializeImplementation Serialize for i16
impl Serialize for i16Operation serialize
serialize = i16.impl@21.serializeImplementation Decode for i16
impl Decode for i16Operation decode
decode = i16.impl@22.decodeImplementation Deserialize for i16
impl Deserialize for i16Operation deserialize
deserialize = i16.impl@23.deserializeImplementation Serialize for i32
impl Serialize for i32Operation serialize
serialize = i32.impl@24.serializeImplementation Decode for i32
impl Decode for i32Operation decode
decode = i32.impl@25.decodeImplementation Deserialize for i32
impl Deserialize for i32Operation deserialize
deserialize = i32.impl@26.deserializeImplementation Serialize for i64
impl Serialize for i64Operation serialize
serialize = i64.impl@27.serializeImplementation Decode for i64
impl Decode for i64Operation decode
decode = i64.impl@28.decodeImplementation Deserialize for i64
impl Deserialize for i64Operation deserialize
deserialize = i64.impl@29.deserializeImplementation Serialize for isize
impl Serialize for isizeOperation serialize
serialize = isize.impl@30.serializeImplementation Decode for isize
impl Decode for isizeOperation decode
decode = isize.impl@31.decodeImplementation Deserialize for isize
impl Deserialize for isizeOperation deserialize
deserialize = isize.impl@32.deserializeImplementation Decode for f32
impl Decode for f32Operation decode
decode = f32.impl@33.decodeImplementation Deserialize for f32
impl Deserialize for f32Operation deserialize
deserialize = f32.impl@34.deserializeImplementation Serialize for f32
impl Serialize for f32Operation serialize
serialize = f32.impl@35.serializeImplementation Decode for f64
impl Decode for f64Operation decode
decode = f64.impl@36.decodeImplementation Deserialize for f64
impl Deserialize for f64Operation deserialize
deserialize = f64.impl@37.deserializeImplementation Serialize for f64
impl Serialize for f64Operation serialize
serialize = f64.impl@38.serializeImplementation Serialize for string<'a>
impl Serialize for string<'a>Operation serialize
serialize = string.impl@39.serializeImplementation Serialize for String
impl Serialize for StringOperation serialize
serialize = String.impl@40.serializeImplementation Deserialize for String
impl Deserialize for StringOperation deserialize
deserialize = String.impl@41.deserializeImplementation Serialize for silk/option.Option<T>
impl Serialize for silk/option.Option<T>Operation serialize
serialize = Option.impl@42.serializeImplementation Decode for silk/option.Option<T>
impl Decode for silk/option.Option<T>Operation decode
decode = Option.impl@43.decodeImplementation Deserialize for silk/option.Option<T>
impl Deserialize for silk/option.Option<T>Operation deserialize
deserialize = Option.impl@44.deserializeImplementation Serialize for silk/vector.Vector<T>
impl Serialize for silk/vector.Vector<T>Operation serialize
serialize = Vector.impl@45.serializeImplementation Deserialize for silk/vector.Vector<T>
impl Deserialize for silk/vector.Vector<T>Operation deserialize
deserialize = Vector.impl@46.deserialize