#![deny(rust_2018_idioms, nonstandard_style)]
#![warn(future_incompatible, missing_docs)]
#![cfg_attr(docsrs, feature(doc_auto_cfg))]
mod acceptable;
mod body_async_write;
mod body_channel;
mod body_limit;
mod bytes;
mod cache_control;
mod catch_panic;
#[cfg(feature = "cbor")]
mod cbor;
mod content_length;
mod csv;
mod display_stream;
mod err_handler;
mod forwarded;
mod host;
mod html;
mod infallible_body_stream;
mod json;
mod lazy_data;
mod load_shed;
mod local_data;
mod middleware_from_fn;
mod middleware_map_response;
mod middleware_map_response_body;
#[cfg(feature = "msgpack")]
mod msgpack;
mod ndjson;
mod normalize_path;
mod panic_reporter;
mod path;
mod query;
mod redirect;
mod redirect_to_https;
mod redirect_to_www;
mod request_signature;
#[cfg(feature = "spa")]
mod spa;
mod strict_transport_security;
mod swap_data;
#[cfg(test)]
mod test_header_macros;
mod test_request_macros;
mod test_response_macros;
mod test_services;
mod url_encoded_form;
mod x_forwarded_prefix;
pub mod body;
pub mod extract;
pub mod guard;
pub mod header;
pub mod middleware;
pub mod respond;
pub mod sse;
pub mod test;
pub mod util;
pub mod web;
#[cfg(feature = "derive")]
pub use actix_web_lab_derive::FromRequest;
#[doc(hidden)]
pub mod __reexports {
pub use ::actix_web;
pub use ::futures_util;
pub use ::serde_json;
pub use ::tokio;
pub use ::tracing;
}
pub(crate) type BoxError = Box<dyn std::error::Error>;