rsiot/serde_utils/mod.rs
1//! Утилиты для сериализации / десериализации
2//!
3//! При передаче данных по сети или сохранении в файловой системе требуется производить операцию сериализации и десериализации:
4//!
5//! – сериализация - процесс преобразования данных в формат, который может
6//! быть передан по сети или сохранен в файловой системе;
7//!
8//! – десериализация - процесс восстановления данных из формата, который был
9//! использован для их передачи или сохранения.
10//! В таблице приведены поддерживаемые в данный момент форматы сериализации.
11//!
12//! | Название | Описание |
13//! | -------- | -------- |
14//! | CBOR | Компактный двоичный формат сериализации данных. Принят как стандарт IETF RFC 8949. [Спецификация формата](https://cbor.io). Примеры использования: `cmp_mqtt_client` - обмен данными между брокером и MQTT-клиентами; `cmp_webscoket_server`, `cmp_webscoket_client` - обмен между клиентами и сервером. |
15//! | JSON | Стандартный текстовый формат для обмена данными между программами и системами. [Спецификация формата](https://www.json.org/json-ru.html). Примеры использования: `cmp_http_server` - предоставление данных сторонним сервисам; `cmp_http_client` - получение данных от сторонних сервисов; `cmp_http_server` + `cmp_http_client` - обмен данными между сервисами. |
16//! | MessagePack | Компактный двоичный формат сериализации данных. [Спецификация формата](https://msgpack.org). Применение аналогично CBOR. |
17//! | Postcard | Двоичный формат, может работать на устройствах с ограниченными ресурсами, например микроконтроллеры. [Спецификация формата](https://postcard.jamesmunns.com/intro). Примеры использования: `cmp_esp_nvs` - хранение данных в энергонезависимой памяти ESP32. |
18//! | TOML | Простой и лаконичный текстовый формат. [Спецификация формата](https://toml.io/en/) Примеры использования: `cmp_filesystem` - хранение настроек приложения; `cmp_esp_i2c_master` + `cmp_esp_i2c_slave` - обмен данными между ESP32 по шине I2C. |
19//!
20//! В качестве примеров в таблице приведены наиболее типовые применения. В любом из указанных компонентов можно использовать любой из перечисленных форматов сериализации и десериализации.
21
22#![allow(unused_imports)]
23#![allow(dead_code)]
24
25#[cfg(feature = "serde_cbor")]
26mod cbor;
27#[cfg(feature = "serde_json")]
28mod json;
29#[cfg(feature = "serde_messagepack")]
30mod messagepack;
31#[cfg(feature = "serde_postcard")]
32mod postcard;
33#[cfg(feature = "serde_toml")]
34mod toml;
35
36mod error;
37// TODO - удалить
38#[cfg(all(feature = "deprecated_stend", feature = "serde_postcard"))]
39pub mod postcard_serde;
40mod serde_alg;
41mod serde_alg_kind;
42
43pub use error::Error;
44pub use serde_alg::SerdeAlg;
45pub use serde_alg_kind::SerdeAlgKind;