Skip to main content

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// Agentic-AI aspects (ICSE 2027 evaluation set)
38pub mod toolscope;
39pub mod tokenbudget;
40pub mod audit;
41
42// Re-export commonly used types
43pub use logging::LoggingAspect;
44pub use timing::TimingAspect;
45pub use caching::CachingAspect;
46pub use metrics::MetricsAspect;
47pub use ratelimit::RateLimitAspect;
48pub use circuitbreaker::{CircuitBreakerAspect, CircuitState};
49pub use authorization::{
50    AllowlistAspect, AllowlistCall, AuthMode, AuthorizationAspect, MatchPolicy, is_allowed_in,
51};
52pub use validation::{ValidationAspect, ValidationRule};
53pub use toolscope::{ToolCall, ToolScopeSandboxAspect};
54pub use tokenbudget::{TokenBudgetAspect, TokenCharge};
55pub use audit::{ActionAuditTrailAspect, AuditContext, AuditRecord};
56
57/// Prelude module for convenient imports.
58pub mod prelude {
59    pub use crate::logging::LoggingAspect;
60    pub use crate::timing::TimingAspect;
61    pub use crate::caching::CachingAspect;
62    pub use crate::metrics::MetricsAspect;
63    pub use crate::ratelimit::RateLimitAspect;
64    pub use crate::circuitbreaker::{CircuitBreakerAspect, CircuitState};
65    pub use crate::authorization::{
66        AllowlistAspect, AllowlistCall, AuthMode, AuthorizationAspect, MatchPolicy, is_allowed_in,
67    };
68    pub use crate::validation::{ValidationAspect, ValidationRule};
69    pub use crate::toolscope::{ToolCall, ToolScopeSandboxAspect};
70    pub use crate::tokenbudget::{TokenBudgetAspect, TokenCharge};
71    pub use crate::audit::{ActionAuditTrailAspect, AuditContext, AuditRecord};
72}