#![warn(
clippy::all,
clippy::dbg_macro,
clippy::todo,
clippy::empty_enums,
clippy::enum_glob_use,
clippy::mem_forget,
clippy::unused_self,
clippy::filter_map_next,
clippy::needless_continue,
clippy::needless_borrow,
clippy::match_wildcard_for_single_variants,
clippy::if_let_mutex,
clippy::await_holding_lock,
clippy::imprecise_flops,
clippy::suboptimal_flops,
clippy::lossy_float_literal,
clippy::rest_pat_in_fully_bound_structs,
clippy::fn_params_excessive_bools,
clippy::exit,
clippy::inefficient_to_string,
clippy::linkedlist,
clippy::macro_use_imports,
clippy::option_option,
clippy::verbose_file_reads,
clippy::unnested_or_patterns,
rust_2018_idioms,
future_incompatible,
nonstandard_style,
missing_docs
)]
#![deny(unreachable_pub)]
#![allow(
elided_lifetimes_in_paths,
// TODO: Remove this once the MSRV bumps to 1.42.0 or above.
clippy::match_like_matches_macro,
clippy::type_complexity
)]
#![forbid(unsafe_code)]
#![cfg_attr(docsrs, feature(doc_cfg))]
#![cfg_attr(test, allow(clippy::float_cmp))]
#[macro_use]
pub(crate) mod macros;
#[cfg(test)]
mod test_helpers;
#[cfg(feature = "auth")]
pub mod auth;
#[cfg(feature = "set-header")]
pub mod set_header;
#[cfg(feature = "propagate-header")]
pub mod propagate_header;
#[cfg(any(
feature = "compression-br",
feature = "compression-deflate",
feature = "compression-gzip",
feature = "compression-zstd",
))]
pub mod compression;
#[cfg(feature = "add-extension")]
pub mod add_extension;
#[cfg(feature = "sensitive-headers")]
pub mod sensitive_headers;
#[cfg(any(
feature = "decompression-br",
feature = "decompression-deflate",
feature = "decompression-gzip",
feature = "decompression-zstd",
))]
pub mod decompression;
#[cfg(any(
feature = "compression-br",
feature = "compression-deflate",
feature = "compression-gzip",
feature = "compression-zstd",
feature = "decompression-br",
feature = "decompression-deflate",
feature = "decompression-gzip",
feature = "decompression-zstd",
feature = "fs" // Used for serving precompressed static files as well
))]
mod content_encoding;
#[cfg(any(
feature = "compression-br",
feature = "compression-deflate",
feature = "compression-gzip",
feature = "compression-zstd",
feature = "decompression-br",
feature = "decompression-deflate",
feature = "decompression-gzip",
feature = "decompression-zstd",
))]
mod compression_utils;
#[cfg(any(
feature = "compression-br",
feature = "compression-deflate",
feature = "compression-gzip",
feature = "compression-zstd",
feature = "decompression-br",
feature = "decompression-deflate",
feature = "decompression-gzip",
feature = "decompression-zstd",
))]
pub use compression_utils::CompressionLevel;
#[cfg(feature = "map-response-body")]
pub mod map_response_body;
#[cfg(feature = "map-request-body")]
pub mod map_request_body;
#[cfg(feature = "trace")]
pub mod trace;
#[cfg(feature = "follow-redirect")]
pub mod follow_redirect;
#[cfg(feature = "limit")]
pub mod limit;
#[cfg(feature = "metrics")]
pub mod metrics;
#[cfg(feature = "cors")]
pub mod cors;
#[cfg(feature = "request-id")]
pub mod request_id;
#[cfg(feature = "catch-panic")]
pub mod catch_panic;
#[cfg(feature = "set-status")]
pub mod set_status;
#[cfg(feature = "timeout")]
pub mod timeout;
#[cfg(feature = "normalize-path")]
pub mod normalize_path;
#[cfg(feature = "on-early-drop")]
pub mod on_early_drop;
pub mod classify;
pub mod services;
#[cfg(feature = "util")]
mod builder;
#[cfg(feature = "util")]
mod service_ext;
#[cfg(feature = "util")]
#[doc(inline)]
pub use self::{builder::ServiceBuilderExt, service_ext::ServiceExt};
#[cfg(feature = "validate-request")]
pub mod validate_request;
#[cfg(any(
feature = "catch-panic",
feature = "decompression-br",
feature = "decompression-deflate",
feature = "decompression-gzip",
feature = "decompression-zstd",
feature = "fs",
feature = "limit",
))]
pub mod body;
#[non_exhaustive]
#[derive(Copy, Clone, Debug)]
pub enum LatencyUnit {
Seconds,
Millis,
Micros,
Nanos,
}
pub type BoxError = Box<dyn std::error::Error + Send + Sync>;