structom 0.2.5

efficient data format for all needs
Documentation
//! the official library for working with structom for the rust language
//! ## structom
//! structom (StructuredAtoms) is a lightweight general data exchange format designed for universal applications, from small human readable object files to large scale data serialization.
//!
//! structom has 3 different forms for data representation:
//! - object notation: consize human readable systax for data manipulated by humans.
//! - binary objects: effecient direct form for shcemaless data.
//! - serialized structs: flattern form for performant data serialization.
//!
//! structom provide additional rich data structures (tagged unions), supports both schema and schemaless data, and provide support for user defined erased metadata for richer data representation.
//!
//! structom is designed to be very versatile and expressive, while remaining efficient and performant, adapting for any need from high level rich data notation to low level effecient serialization.
//!
//! read more about the structom format in its [specification](https://github.com/aliibrahim123/structom/blob/main/spec/index.md).
//!
//! ## features
//! this crate provides the following features for working with structom:
//! - parsing and stringifying object notation files.
//! - decoding and encoding binary files.
//! - manipulating and creating structom values.
//! - supports both schema and schemaless data.
//! - parsing and managment of decleration files.
//! - provide runtime for the serialization code generated by codegen.
//!
//! this crate supports every feature of the structom specification.
#![allow(clippy::tabs_in_doc_comments)]
pub(crate) mod builtins;
mod declaration;
pub mod encoding;
mod errors;
mod fs_provider;
mod parser;
mod stringify;
mod value;

pub use declaration::{
	DeclFile, DeclProvider, FixedSetProvider, FixedSetProviderRef, VoidProvider,
};
pub use encoding::{Serialized, decode, encode};
pub use errors::ImportError;
pub use errors::ParseError;
pub use fs_provider::FSProvider;
pub use parser::{ParseOptions, parse, parse_declaration_file};
pub use stringify::{StringifyOptions, stringify};
pub use value::{Key, Value};

#[doc(hidden)]
pub mod internal {
	pub use crate::builtins::*;
	pub use crate::declaration::{DeclItem, EnumVariant, Field, StructDef, TypeId};
}

#[cfg(test)]
mod tests;