1 unstable release
0.1.0 | Jun 26, 2024 |
---|
#670 in Rust patterns
132 downloads per month
Used in 17 crates
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:
- Booleans, represented as
Value::BooleanValue
- Integers. When deserializing, an appropriate Rust integer type will be chosen, depending on this size of the integer.
- 64bit floating point numbers, represented as
Value::Float64Value
. - UTF-8 Strings, represented as
Value::Text
. - 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 asValue::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 asItem::ValueItem
. - A slot item which is a pair of two
Value
s, the first of which is interpreted as a key. This is represented asItem::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
~5.5–7.5MB
~131K SLoC