1#![cfg_attr(docsrs, feature(doc_cfg))]
40#![deny(missing_docs)]
41#![deny(unsafe_code)]
42#![warn(clippy::all)]
43
44#[cfg(feature = "config")]
45#[cfg_attr(docsrs, doc(cfg(feature = "config")))]
46pub mod config;
47
48#[cfg(feature = "error")]
49#[cfg_attr(docsrs, doc(cfg(feature = "error")))]
50pub mod error;
51
52#[cfg(feature = "logging")]
53#[cfg_attr(docsrs, doc(cfg(feature = "logging")))]
54pub mod logging;
55
56#[cfg(feature = "time")]
57#[cfg_attr(docsrs, doc(cfg(feature = "time")))]
58pub mod time;
59
60#[cfg(feature = "collections")]
61#[cfg_attr(docsrs, doc(cfg(feature = "collections")))]
62pub mod collections;
63
64#[cfg(feature = "validation")]
65#[cfg_attr(docsrs, doc(cfg(feature = "validation")))]
66pub mod validation;
67
68#[cfg(feature = "retry")]
69#[cfg_attr(docsrs, doc(cfg(feature = "retry")))]
70pub mod retry;
71
72#[cfg(feature = "id")]
73#[cfg_attr(docsrs, doc(cfg(feature = "id")))]
74pub mod id;
75
76#[cfg(feature = "env")]
77#[cfg_attr(docsrs, doc(cfg(feature = "env")))]
78pub mod env;
79
80pub mod prelude {
88 #[cfg(feature = "error")]
89 pub use crate::error::{CommonError, CommonResult};
90
91 #[cfg(feature = "config")]
92 pub use crate::config::{Config, ConfigBuilder, ConfigError};
93
94 #[cfg(feature = "logging")]
95 pub use crate::logging::{LogLevel, Logger};
96
97 #[cfg(feature = "time")]
98 pub use crate::time::{format_duration, parse_duration, unix_timestamp, unix_timestamp_millis};
99
100 #[cfg(feature = "collections")]
101 pub use crate::collections::LruCache;
102
103 #[cfg(feature = "validation")]
104 pub use crate::validation::{
105 Validator, is_valid_email, is_valid_url, validate_length, validate_range,
106 };
107
108 #[cfg(feature = "retry")]
109 pub use crate::retry::{BackoffStrategy, RetryConfig, retry};
110
111 #[cfg(feature = "id")]
112 pub use crate::id::{IdFormat, IdGenerator, generate_id, generate_prefixed_id};
113
114 #[cfg(feature = "env")]
115 pub use crate::env::{get_env, get_env_or, is_development, is_production, require_env};
116}
117
118pub const VERSION: &str = env!("CARGO_PKG_VERSION");
120
121#[must_use]
123pub fn version() -> &'static str {
124 VERSION
125}
126
127#[cfg(test)]
128mod tests {
129 use super::*;
130
131 #[test]
132 fn test_version() {
133 assert_eq!(version(), "0.0.1");
134 }
135}