1. Common Keys
    1. Exportable Types
      1. exports
      2. source
    2. Value Types
    3. Serializable Types
    4. Stringifiable Types
    5. Fileable Types
    6. Container Types

Common Keys

Exportable Types

All structs, besides statics, must define the following keys:

exports

For other than the RPL struct type:

source

All keys are read-only.

Value Types

All value types must declare a data key which stores its data. This is essentially a circular reference but allows one to set the basic data for a value type when defining it in a struct form. Whether the data is defined through a basic instantiation or not matters and how keystructs deal with the type can be complex. For mor information, see the Proxying section.

Serializable Types

All serializable types must define the following keys:

Stringifiable Types

Fileable Types

Container Types

Container types are types that accept any structure as a substruct (that fits its packing criteria, see Text and Bin) and make it so that their substructs refer to a binary, text, or virtual directory structure that they provide rather than the root's. All containers are also un/packable but if they have any substructs then they must be careful to not export duplicate data when exporting themselves.

Some container types may also be value types, essentially returning a string or bin of their contents.