pub enum SerializationMode {
    Programmatic,
    Model,
    Natural,
}

Variants§

§

Programmatic

The “(Annotated) Programmatic” encoding is a default invertible API format which captures the SBOR value model, and supports optional name annotations from a schema.

SBOR values are generally wrapped in an object with a “kind” field. Fields are output as an array to faithfully represent the ordering in the SBOR value.

If a schema is available, variant names, type names and field names are added to the output.

If value/type data is included in the parent (Vecs and Map entries), it is still duplicated on the child object for simplicity.

§

Model

==THIS FORMAT IS DEPRECATED - BUT KEPT FOR THE TIME BEING FOR NODE COMPATIBILITY==

This “Model” encoding is intended to exactly capture the content of the scrypto value, in a way which can be inverted back into a scrypto value.

SBOR values are generally wrapped in an object with a “kind” field. Fields are output as an array to faithfully represent the ordering in the SBOR value.

It is more compact than the Programmatic format, but more complex to describe, because children of arrays/maps are not wrapped in a JSON object with the kind field.

If value/type data is included in the parent (Vecs and Map entries), it is not duplicated on the values. This avoids duplication in the output. In these cases, child tuples and single values lose their wrapper object, to keep the output concise. Other values keep their wrapper object, as there are other fields to convey.

If a schema is available, variant names, type names and field names are added to the output.

§

Natural

==THIS FORMAT IS NOT INTENDED TO BE USED YET==

An API format designed for elegantly reading values with a well-known schema - intended for eg DApp Builders writing their front-ends.

It outputs values in a “JSON-native” manner - designed primary for use with a schema, and for mapping into models like you’d find on an Open API schema.

Its JSON schema is dependent on its SBOR schema, and it’s not intended to be invertible without the SBOR schema. We could even consider generating an Open API schema for a given SBOR schema (eg for a blueprint) and allow developers to have a strongly-typed API to their blueprint.

Compared with Programmatic, it is more compact, but doesn’t include type names / enum variant names.

It should favour simplicity for human comprehension, in particular:

  • It uses a JSON object rather than an array where possible, even if this loses field ordering EG for structs, and for maps with string keys.
  • If the concept which is being represented (eg number/amount or address) is clear to a human, information about the value kind is dropped.
  • It prefers to use the JSON number type where the number can be confirmed to be <= JS max safe int.

Trait Implementations§

source§

impl Clone for SerializationMode

source§

fn clone(&self) -> SerializationMode

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for SerializationMode

source§

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

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

impl PartialEq for SerializationMode

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for SerializationMode

source§

impl Eq for SerializationMode

source§

impl StructuralPartialEq for SerializationMode

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
§

impl<U> As for U

§

fn as_<T>(self) -> T
where T: CastFrom<U>,

Casts self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. 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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. 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> Same for T

§

type Output = T

Should always be Self
source§

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

§

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

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

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

§

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

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V