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;
60#[cfg(feature = "http2")]
61pub(crate) mod async_bridge;
62pub mod session;
63pub(crate) mod redis_protocol;
64pub mod sse;
65pub mod compression;
66pub mod cookie;
67pub mod error;
68pub mod extract;
69pub mod ip_filter;
70pub mod macros;
71pub mod blocklist;
72pub mod cache;
73pub mod config_reload;
74pub mod server_config;
75pub mod feature;
76pub mod maintenance;
77pub mod metrics;
78pub mod mcp;
79pub mod request_log;
80pub mod request_id;
81pub mod otel;
82#[cfg(feature = "acme")]
83pub mod acme;
84pub mod middleware;
85pub mod rate_limit;
86pub mod router;
87pub mod state;
88pub mod test_client;
89pub mod application;
90pub mod body;
91pub mod client_hint;
92pub mod controller;
93pub mod core;
94pub mod cors;
95pub mod entry_point;
96pub mod ext;
97pub mod header;
98pub mod http;
99pub mod json;
100pub mod language;
101pub mod log;
102pub mod mime_type;
103pub mod null;
104pub mod range;
105pub mod request;
106pub mod response;
107pub mod server;
108pub mod symbol;
109pub mod thread_pool;
110pub mod url;
111pub mod pagination;
112pub mod proxy;
113pub mod rewrite;
114pub mod scheduler;
115pub mod tcp_proxy;
116pub mod udp_proxy;
117pub mod ws_proxy;
118pub mod canary;
119pub mod circuit_breaker;
120pub mod service_discovery;
121pub mod config_binding;
122pub mod di;
123pub mod proxy_config;
124pub mod ingress;
125#[cfg(feature = "tera")]
126pub mod template;
127pub mod validate;
128pub mod virtual_host;
129#[cfg(any(feature = "model-sqlite", feature = "model-postgres", feature = "model-mysql"))]
130pub mod model;
131pub mod websocket;
132pub mod http_client;
133#[cfg(feature = "crypto")]
134pub mod crypto;
135#[cfg(feature = "csrf")]
136pub mod csrf;
137#[cfg(feature = "sso")]
138pub mod sso;
139#[cfg(feature = "mailer")]
140pub mod mailer;
141#[cfg(feature = "jobs")]
142pub mod jobs;
143#[cfg(any(feature = "storage-local", feature = "storage-s3", feature = "storage-azure"))]
144pub mod storage;
145#[cfg(feature = "openapi")]
146pub mod openapi;
147#[cfg(feature = "webhook")]
148pub mod webhook;
149pub mod timeout;
150pub mod prelude;
151
152#[cfg(feature = "http2")]
153#[doc(hidden)]
154pub mod tls;
155
156#[cfg(feature = "http2")]
157#[doc(hidden)]
158pub mod h2_handler;
159
160#[cfg(feature = "http3")]
161#[doc(hidden)]
162pub mod h3_handler;
163
164#[cfg(test)]
171pub mod test_env {
172 use std::sync::{Mutex, OnceLock};
173 static LOCK: OnceLock<Mutex<()>> = OnceLock::new();
174 pub fn lock() -> std::sync::MutexGuard<'static, ()> {
175 LOCK.get_or_init(|| Mutex::new(()))
176 .lock()
177 .unwrap_or_else(|e| e.into_inner())
178 }
179}