#![deny(missing_docs)]
#![deny(missing_debug_implementations)]
#![cfg_attr(test, deny(rust_2018_idioms))]
#![cfg_attr(all(test, feature = "full"), deny(unreachable_pub))]
#![cfg_attr(test, deny(warnings))]
#![cfg_attr(all(test, feature = "nightly"), feature(test))]
#![cfg_attr(docsrs, feature(doc_cfg))]
#[doc(hidden)]
pub use http;
#[cfg(any(
feature = "http1",
feature = "http2",
all(feature = "client", feature = "tcp")
))]
#[macro_use]
extern crate tracing;
#[cfg(all(test, feature = "nightly"))]
extern crate test;
pub use crate::http::{header, Method, Request, Response, StatusCode, Uri, Version};
#[doc(no_inline)]
pub use crate::http::HeaderMap;
pub use crate::body::Body;
pub use crate::error::{Error, Result};
#[macro_use]
mod cfg;
#[macro_use]
mod common;
pub mod body;
mod error;
mod ext;
#[cfg(test)]
mod mock;
#[cfg(any(feature = "http1", feature = "http2",))]
pub mod rt;
pub mod service;
pub mod upgrade;
#[cfg(feature = "ffi")]
pub mod ffi;
cfg_proto! {
mod headers;
mod proto;
}
cfg_feature! {
#![all(feature = "client")]
pub mod client;
#[cfg(any(feature = "http1", feature = "http2"))]
#[doc(no_inline)]
pub use crate::client::Client;
}
cfg_feature! {
#![all(feature = "server")]
pub mod server;
#[cfg(any(feature = "http1", feature = "http2"))]
#[doc(no_inline)]
pub use crate::server::Server;
}