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 feature;
72pub mod maintenance;
73pub mod metrics;
74pub mod mcp;
75pub mod request_log;
76pub mod otel;
77#[cfg(feature = "acme")]
78pub mod acme;
79pub mod middleware;
80pub mod rate_limit;
81pub mod router;
82pub mod state;
83pub mod test_client;
84pub mod application;
85pub mod body;
86pub mod client_hint;
87pub mod controller;
88pub mod core;
89pub mod cors;
90pub mod entry_point;
91pub mod ext;
92pub mod header;
93pub mod http;
94pub mod json;
95pub mod language;
96pub mod log;
97pub mod mime_type;
98pub mod null;
99pub mod range;
100pub mod request;
101pub mod response;
102pub mod server;
103pub mod symbol;
104pub mod thread_pool;
105pub mod url;
106pub mod proxy;
107pub mod rewrite;
108pub mod scheduler;
109pub mod tcp_proxy;
110pub mod udp_proxy;
111pub mod ws_proxy;
112pub mod canary;
113pub mod circuit_breaker;
114pub mod service_discovery;
115pub mod config_binding;
116pub mod di;
117pub mod proxy_config;
118pub mod ingress;
119#[cfg(feature = "tera")]
120pub mod template;
121pub mod validate;
122pub mod virtual_host;
123#[cfg(any(feature = "model-sqlite", feature = "model-postgres", feature = "model-mysql"))]
124pub mod model;
125pub mod websocket;
126pub mod http_client;
127#[cfg(feature = "crypto")]
128pub mod crypto;
129#[cfg(feature = "csrf")]
130pub mod csrf;
131#[cfg(feature = "sso")]
132pub mod sso;
133#[cfg(feature = "mailer")]
134pub mod mailer;
135pub mod prelude;
136
137#[cfg(feature = "http2")]
138#[doc(hidden)]
139pub mod tls;
140
141#[cfg(feature = "http2")]
142#[doc(hidden)]
143pub mod h2_handler;
144
145#[cfg(feature = "http3")]
146#[doc(hidden)]
147pub mod h3_handler;
148
149#[cfg(test)]
156pub mod test_env {
157 use std::sync::{Mutex, OnceLock};
158 static LOCK: OnceLock<Mutex<()>> = OnceLock::new();
159 pub fn lock() -> std::sync::MutexGuard<'static, ()> {
160 LOCK.get_or_init(|| Mutex::new(()))
161 .lock()
162 .unwrap_or_else(|e| e.into_inner())
163 }
164}