swimos_model

SwimOS Generic Representation of the SwimOS Serialization Model

2 releases

0.1.1 Sep 27, 2024
0.1.0 Jun 26, 2024
Download history 25/week @ 2024-06-28 20/week @ 2024-07-05 26/week @ 2024-07-12 14/week @ 2024-07-19 11/week @ 2024-07-26 11/week @ 2024-08-09 36/week @ 2024-08-16 37/week @ 2024-08-23 58/week @ 2024-08-30 31/week @ 2024-09-06 48/week @ 2024-09-13 55/week @ 2024-09-20 244/week @ 2024-09-27 32/week @ 2024-10-04 24/week @ 2024-10-11

366 downloads per month
Used in 19 crates

Apache-2.0

155KB
3.5K SLoC

SwimOS Model

This model is a generic representation of the SwimOS serialization model. Any valid serialized record can be deserialized as an instance of the Value type in this crate.

The Value type

A SwimOS Value can be of any one of the following kinds.

  • An absent value (represented as Value::Extant).
  • A primitive value from the following set:
  1. Booleans, represented as Value::BooleanValue
  2. Integers. When deserializing, an appropriate Rust integer type will be chosen, depending on this size of the integer.
  3. 64bit floating point numbers, represented as Value::Float64Value.
  4. UTF-8 Strings, represented as Value::Text.
  5. Arrays of bytes (represented as Value::Data).
  • A record consisting of an list of attributes (Attr) and and list of items (Item). This is represented as Value::Record.

An attribute is a labelled (with a UTF-8 String) Value.

An item is one of:

  • A value item which is an instance of Value. This is represented as Item::ValueItem.
  • A slot item which is a pair of two Values, the first of which is interpreted as a key. This is represented as Item::Slot.

Note that the attributes and items of a record are always ordered, although the order may not always be significant, for example if a record, consisting only of slots, is used to represent a map.

The record and [macro@value] macros can be used to simplify the creation of Value instances.

Using the model

The use the model for serialization or deserialization, a format supporting the SwimOS model is required. The default format used by SwimsOS is the Recon markup language, an example of which can be found in the swimos_recon crate.

Dependencies

~6–12MB
~130K SLoC