A schema, representing set of types (i.e. rust code) as a data structure.
The schema allows any included type’s borsh serialization to be displayed as a human readable string,
and the type’s JSON serialisation to be re-serialised to borsh without depending on the
original Rust type.
It is also serialisable and therefore, once generated for a rollup, can be imported and used with
non-Rust languages, enabling toolkits in any language to implement the same functionality as above.
Establish that this type should use the Output type to generate its schema.
This is appropriate for cases where different types represent the same kind of data structure.
For instance, HashMap and BTreeMap both represent a Container::Map in the data model of the
schema; their internal implementation differences don’t affect the shape of their schemas.
Generate the schema for a type.
For complex types, this should typically be derived with a macro,
rather than implemented by hand.
This is also automatically implemented for all types implementing OverrideSchema.