aspect_std/lib.rs
1//! # aspect-std
2//!
3//! Standard aspects library providing common, production-ready aspects.
4//!
5//! This crate provides a collection of reusable aspects for common cross-cutting concerns:
6//! - **Logging**: Structured logging with configurable levels
7//! - **Timing**: Performance monitoring with statistics
8//! - **Caching**: Generic memoization with TTL
9//! - **Metrics**: Counters, gauges, and histograms
10//! - **Rate Limiting**: Token bucket algorithm for throttling
11//! - **Circuit Breaker**: Fault tolerance and failure prevention
12//! - **Authorization**: Role-based access control
13//! - **Validation**: Pre/post condition checking
14//!
15//! ## Quick Start
16//!
17//! ```rust,ignore
18//! use aspect_std::prelude::*;
19//! use aspect_macros::aspect;
20//!
21//! // Use the standard logging aspect
22//! #[aspect(LoggingAspect::new())]
23//! fn my_function(x: i32) -> i32 {
24//! x * 2
25//! }
26//! ```
27
28pub mod logging;
29pub mod timing;
30pub mod caching;
31pub mod metrics;
32pub mod ratelimit;
33pub mod circuitbreaker;
34pub mod authorization;
35pub mod validation;
36
37// Re-export commonly used types
38pub use logging::LoggingAspect;
39pub use timing::TimingAspect;
40pub use caching::CachingAspect;
41pub use metrics::MetricsAspect;
42pub use ratelimit::RateLimitAspect;
43pub use circuitbreaker::{CircuitBreakerAspect, CircuitState};
44pub use authorization::{AuthorizationAspect, AuthMode};
45pub use validation::{ValidationAspect, ValidationRule};
46
47/// Prelude module for convenient imports.
48pub mod prelude {
49 pub use crate::logging::LoggingAspect;
50 pub use crate::timing::TimingAspect;
51 pub use crate::caching::CachingAspect;
52 pub use crate::metrics::MetricsAspect;
53 pub use crate::ratelimit::RateLimitAspect;
54 pub use crate::circuitbreaker::{CircuitBreakerAspect, CircuitState};
55 pub use crate::authorization::{AuthorizationAspect, AuthMode};
56 pub use crate::validation::{ValidationAspect, ValidationRule};
57}