feagi_data_serialization/lib.rs
1
2//! # FEAGI Data Serialization
3//!
4//! This crate provides traits and utilities for serializing and deserializing various data structures
5//! to and from byte vectors in the FEAGI system. It offers a unified serialization framework through
6//! the [`FeagiSerializable`] trait and efficient byte data management via [`FeagiByteContainer`].
7//!
8//! ## Core Components
9//!
10//! - **[`FeagiSerializable`]** - Common trait for structures that can be serialized to/from bytes
11//! - **[`FeagiByteContainer`]** - Container that manages and owns byte data for multiple structures
12//! - **[`FeagiByteStructureType`]** - Enum identifying different serializable structure types
13//!
14//!
15//! ## Basic Usage
16//!
17//! ```rust
18//! use feagi_data_serialization::{FeagiByteContainer, FeagiSerializable};
19//!
20//! // Create an empty container
21//! let mut container = FeagiByteContainer::new_empty();
22//! assert!(container.is_valid());
23//! assert_eq!(container.try_get_number_contained_structures().unwrap(), 0);
24//!
25//! // Get information about the container
26//! let byte_count = container.get_number_of_bytes_used();
27//! let struct_types = container.get_contained_struct_types();
28//! ```
29//!
30//! More information about the specification can be found in the documentation.
31
32pub mod implementations;
33mod feagi_byte_container;
34mod feagi_byte_structure_type;
35mod feagi_serializable;
36
37pub use feagi_serializable::FeagiSerializable;
38pub use feagi_byte_structure_type::FeagiByteStructureType;
39pub use feagi_byte_container::FeagiByteContainer;
40