1extern crate self as rust_web_server;
49
50pub mod app;
51#[cfg(feature = "auth")]
52pub mod auth;
53
54#[cfg(feature = "macros")]
55pub use rws_macros::{delete, get, patch, post, put, route, Config, FromRequest, Validate};
56#[cfg(all(feature = "macros", any(feature = "model-sqlite", feature = "model-postgres", feature = "model-mysql")))]
57pub use rws_macros::Model;
58#[cfg(feature = "http2")]
59pub mod async_state;
60pub mod session;
61pub mod sse;
62pub mod compression;
63pub mod cookie;
64pub mod error;
65pub mod extract;
66pub mod ip_filter;
67pub mod macros;
68pub mod blocklist;
69pub mod cache;
70pub mod config_reload;
71pub mod server_config;
72pub mod feature;
73pub mod maintenance;
74pub mod metrics;
75pub mod mcp;
76pub mod request_log;
77pub mod otel;
78#[cfg(feature = "acme")]
79pub mod acme;
80pub mod middleware;
81pub mod rate_limit;
82pub mod router;
83pub mod state;
84pub mod test_client;
85pub mod application;
86pub mod body;
87pub mod client_hint;
88pub mod controller;
89pub mod core;
90pub mod cors;
91pub mod entry_point;
92pub mod ext;
93pub mod header;
94pub mod http;
95pub mod json;
96pub mod language;
97pub mod log;
98pub mod mime_type;
99pub mod null;
100pub mod range;
101pub mod request;
102pub mod response;
103pub mod server;
104pub mod symbol;
105pub mod thread_pool;
106pub mod url;
107pub mod proxy;
108pub mod rewrite;
109pub mod scheduler;
110pub mod tcp_proxy;
111pub mod udp_proxy;
112pub mod ws_proxy;
113pub mod canary;
114pub mod circuit_breaker;
115pub mod service_discovery;
116pub mod config_binding;
117pub mod di;
118pub mod proxy_config;
119pub mod ingress;
120#[cfg(feature = "tera")]
121pub mod template;
122pub mod validate;
123pub mod virtual_host;
124#[cfg(any(feature = "model-sqlite", feature = "model-postgres", feature = "model-mysql"))]
125pub mod model;
126pub mod websocket;
127pub mod http_client;
128#[cfg(feature = "crypto")]
129pub mod crypto;
130#[cfg(feature = "csrf")]
131pub mod csrf;
132#[cfg(feature = "sso")]
133pub mod sso;
134#[cfg(feature = "mailer")]
135pub mod mailer;
136#[cfg(feature = "jobs")]
137pub mod jobs;
138#[cfg(any(feature = "storage-local", feature = "storage-s3"))]
139pub mod storage;
140pub mod prelude;
141
142#[cfg(feature = "http2")]
143#[doc(hidden)]
144pub mod tls;
145
146#[cfg(feature = "http2")]
147#[doc(hidden)]
148pub mod h2_handler;
149
150#[cfg(feature = "http3")]
151#[doc(hidden)]
152pub mod h3_handler;
153
154#[cfg(test)]
161pub mod test_env {
162 use std::sync::{Mutex, OnceLock};
163 static LOCK: OnceLock<Mutex<()>> = OnceLock::new();
164 pub fn lock() -> std::sync::MutexGuard<'static, ()> {
165 LOCK.get_or_init(|| Mutex::new(()))
166 .lock()
167 .unwrap_or_else(|e| e.into_inner())
168 }
169}