2 releases

0.1.1 Sep 27, 2024
0.1.0 Jun 26, 2024

#390 in Text processing

Download history 5/week @ 2024-07-21 10/week @ 2024-07-28 19/week @ 2024-08-11 28/week @ 2024-08-18 52/week @ 2024-08-25 54/week @ 2024-09-01 30/week @ 2024-09-08 50/week @ 2024-09-15 192/week @ 2024-09-22 115/week @ 2024-09-29 14/week @ 2024-10-06 25/week @ 2024-10-13 28/week @ 2024-10-20 36/week @ 2024-10-27 25/week @ 2024-11-03

115 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