Expand description
Module is available if borsh is built with features = ["unstable__schema"].
Since Borsh is not a self-descriptive format we have a way to describe types serialized with Borsh so that
we can deserialize serialized blobs without having Rust types available. Additionally, this can be used to
serialize content provided in a different format, e.g. JSON object {"user": "alice", "message": "Message"}
can be serialized by JS code into Borsh format such that it can be deserialized into struct UserMessage {user: String, message: String}
on Rust side.
The important components are: BorshSchema trait, Definition and Declaration types, and BorshSchemaContainer struct.
BorshSchematrait allows any type that implements it to be self-descriptive, i.e. generate it’s own schema;Declarationis used to describe the type identifier, e.g.HashMap<u64, String>;Definitionis used to describe the structure of the type;BorshSchemaContaineris used to store all declarations and definitions that are needed to work with a single type.
Modules§
- hashes
- Module is available if borsh is built with
features = ["std"]orfeatures = ["hashbrown"].
Structs§
- Borsh
Schema Container - All schema information needed to deserialize a single type.
Enums§
- Definition
- The type that we use to represent the definition of the Borsh type.
- Fields
- The collection representing the fields of a struct.
- Schema
Container Validate Error - Possible error when validating a
BorshSchemaContainer, generated for some typeT, for violation of any well-known rules with respect toborshserialization. - Schema
MaxSerialized Size Error - Possible error when calculating theoretical maximum size of encoded type
T.
Traits§
- Borsh
Schema - The declaration and the definition of the type that can be used to (de)serialize Borsh without the Rust type that produced it.
Functions§
- add_
definition - Helper method to add a single type definition to the map.
Type Aliases§
- Declaration
- The type that we use to represent the declaration of the Borsh type.
- Discriminant
Value - The type that we use for value of discriminant.
- Field
Name - The name of the field in the struct (can be used to convert JSON to Borsh using the schema).
- Variant
Name - The type that we use for the name of the variant.