A parsing library that generates TypeScript classes and serialization schemas from Rust data structures.
Prepend a Rust struct
with the BorshSchema
derivable trait like this
```rust
struct SomeStruct {
foo: u32,
bar: Option
```ts export class SomeStruct extends Struct { foo: number, bar: BN | null, baz: string[], quux: Map<[32], PublicKey>, }
export const SCHEMA = new Map
The library also supports
enumtypes, just add the
BorshSchema` derive attribute.
For example ```rust
struct FooStruct {
foo: Option
enum SomeEnum {
UnitVariant,
UnnamedFields(u64, [String; 2]),
NamedFields {
foo_struct: FooStruct,
bar: Vec
will result in
ts
export class FooStruct extends Struct {
foo: string | null,
}
export class SomeEnum extends Enum { someEnumUnitVariant: someEnumUnitVariant, someEnumUnnamedFields: someEnumUnnamedFields, someEnumNamedFields: someEnumNamedFields, }
export class SomeEnumUnitVariant extends Struct {} export class SomeEnumUnnamedFields extends Struct { unnamed1: BN, unnamed2: string[], }
export class SomeEnumNamedFields extends Struct { fooStruct: FooStruct, bar: number[], }
export const SCHEMA = new Mapstruct
, fields [],
},
],
[
SomeEnumUnnamedFields,
{
kind: struct
, fields [
['unnamed1', u64],
['unnamed2', ['string', 2]],
],
},
],
[
SomeEnumNamedFields,
{
kind: struct
, fields [
['fooStruct', FooStruct],
['bar', ['u8']],
],
},
],
])
```