2 releases

0.1.1 Sep 27, 2024
0.1.0 Jun 26, 2024

#415 in Text processing

Download history 34/week @ 2024-08-21 63/week @ 2024-08-28 30/week @ 2024-09-04 44/week @ 2024-09-11 42/week @ 2024-09-18 239/week @ 2024-09-25 55/week @ 2024-10-02 22/week @ 2024-10-09 28/week @ 2024-10-16 36/week @ 2024-10-23 23/week @ 2024-10-30 15/week @ 2024-11-06 9/week @ 2024-11-13 31/week @ 2024-11-20 49/week @ 2024-11-27 64/week @ 2024-12-04

153 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
~131K SLoC