waddling_sequences/lib.rs
1//! # waddling-sequences
2//!
3//! **Standard error sequence definitions for the Waddling ecosystem**
4//!
5//! This crate provides standardized sequence numbers with semantic meanings
6//! that are consistent across all Waddling projects, following the **WDP Part 6:
7//! Sequence Conventions** specification.
8//!
9//! ## Quick Start
10//!
11//! ```rust
12//! use waddling_sequences::input_validation::*;
13//!
14//! const MY_ERROR: u16 = MISSING; // 001 - always means "missing"
15//! const OTHER_ERROR: u16 = MISMATCH; // 002 - always means "mismatch"
16//! ```
17//!
18//! ## Module Organization (WDP-6 Sections)
19//!
20//! - [`input_validation`] - Input/Data Validation (001-010): MISSING, INVALID, OUT_OF_BOUNDS, etc.
21//! - [`state_lifecycle`] - State/Lifecycle (011-020): UNINITIALIZED, CLOSED, TIMEOUT, STALE, etc.
22//! - [`resource_storage`] - Resource/Storage (021-030): NOT_FOUND, CONFLICT, UNAVAILABLE, DISCONNECTED, etc.
23//! - [`success`] - Success/Completion (998-999): PARTIAL, COMPLETE
24//!
25//! ## Benefits
26//!
27//! - ✅ **Zero dependencies** - Just pure constants
28//! - ✅ **Tree-shakeable** - Only what you import is compiled in
29//! - ✅ **Universal** - Works with any error library
30//! - ✅ **Consistent** - Same meanings across all projects
31//! - ✅ **WDP-6 Compliant** - Follows official sequence conventions
32//!
33//! ## Metadata Feature
34//!
35//! Enable the `metadata` feature to access rich documentation at runtime:
36//!
37//! ```rust
38//! #[cfg(feature = "metadata")]
39//! use waddling_sequences::metadata;
40//!
41//! #[cfg(feature = "metadata")]
42//! {
43//! let meta = metadata::get(1).unwrap();
44//! println!("{}: {}", meta.name, meta.docs);
45//! // Output: MISSING: Required data not provided
46//! }
47//! ```
48//!
49//! ## WDP-6 Reference
50//!
51//! This crate implements the sequence conventions from:
52//! **WDP Part 6: Sequence Conventions (WDP-6)**
53//!
54//! All sequence numbers, names, and semantics follow the official specification.
55
56#![no_std]
57#![forbid(unsafe_code)]
58#![warn(missing_docs)]
59
60// Doc generation requires std for file I/O - temporarily disabled
61// #[cfg(feature = "doc-gen")]
62// extern crate std;
63
64/// Input/Data Validation sequences (001-010)
65///
66/// These cover data validation, format checking, and input processing.
67///
68/// **WDP-6 §4.1:** Input/Data Validation
69pub mod input_validation;
70
71/// State and Lifecycle sequences (011-020)
72///
73/// These relate to object/resource state, lifecycle management, and temporal conditions.
74///
75/// **WDP-6 §4.2:** State/Lifecycle
76pub mod state_lifecycle;
77
78/// Resource and Storage sequences (021-030)
79///
80/// These relate to resource management, storage, persistence, and network connectivity.
81///
82/// **WDP-6 §4.3:** Resource/Storage (includes network sequences 027-029)
83pub mod resource_storage;
84
85/// Success and completion sequences (998-999)
86///
87/// These indicate successful operations or completion states.
88///
89/// **WDP-6 §6:** Success/Completion
90pub mod success;
91
92/// Metadata and documentation (enabled with `metadata` feature)
93///
94/// Contains human-readable documentation for each sequence according to WDP-6.
95#[cfg(feature = "metadata")]
96pub mod metadata;
97
98/// Documentation generation (enabled with `doc-gen` feature)
99///
100/// Generates comprehensive HTML and JSON documentation for all standard sequences.
101#[cfg(feature = "doc-gen")]
102pub mod docgen;
103
104/// Macro-based sequence definitions (enabled with `macros` feature)
105///
106/// Provides WDP-6 sequences as `sequence!` macro definitions for full
107/// waddling-errors ecosystem integration with compile-time validation.
108#[cfg(feature = "macros")]
109pub mod macros;
110
111/// Re-export all sequences for convenience
112///
113/// Import all standard sequences at once for ease of use.
114///
115/// # Examples
116/// ```rust
117/// use waddling_sequences::prelude::*;
118///
119/// const ERR1: u16 = MISSING; // From input_validation
120/// const ERR2: u16 = TIMEOUT; // From state_lifecycle
121/// const ERR3: u16 = NOT_FOUND; // From resource_storage
122/// const ERR4: u16 = UNAVAILABLE; // From resource_storage
123/// const SUCCESS: u16 = COMPLETE; // From success
124/// ```
125pub mod prelude {
126 pub use crate::input_validation::*;
127 pub use crate::resource_storage::*;
128 pub use crate::state_lifecycle::*;
129 pub use crate::success::*;
130}