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