1#![doc(html_logo_url = "https://viz.rs/logo.svg")]
6#![doc(html_favicon_url = "https://viz.rs/logo.svg")]
7#![doc(test(
8 no_crate_inject,
9 attr(deny(warnings, rust_2018_idioms), allow(dead_code, unused_variables))
10))]
11#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
12
13#[macro_use]
14pub(crate) mod macros;
15
16pub mod handler;
17#[doc(inline)]
18pub use crate::handler::{BoxHandler, FnExt, Handler, HandlerExt, IntoHandler, Next, Transform};
19
20pub mod middleware;
21pub mod types;
22
23mod body;
24pub use body::{Body, BodyState};
25
26mod error;
27pub use error::{BoxError, Error};
28
29mod from_request;
30pub use from_request::FromRequest;
31
32mod into_response;
33pub use into_response::IntoResponse;
34
35mod request;
36pub use request::RequestExt;
37#[cfg(feature = "limits")]
38pub use request::RequestLimitsExt;
39
40mod response;
41pub use response::ResponseExt;
42
43pub type Request<T = Body> = http::Request<T>;
45pub type Response<T = Body> = http::Response<T>;
47pub type Result<T, E = Error> = ::core::result::Result<T, E>;
49
50pub use async_trait::async_trait;
51pub use bytes::{Bytes, BytesMut};
52pub use core::future::Future;
53pub use futures_util::future;
54#[doc(inline)]
55pub use headers;
56pub use http::{header, Method, StatusCode};
57pub use hyper::body::{Body as HttpBody, Incoming};
58pub use hyper_util::rt::TokioIo as Io;
59pub use thiserror::Error as ThisError;
60
61#[doc(hidden)]
62mod tuples {
63 use super::{Error, FnExt, FromRequest, Future, IntoResponse, Request, Result};
64
65 tuple_impls!(A B C D E F G H I J K L);
66}