• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #![deny(missing_docs)]
2 #![deny(missing_debug_implementations)]
3 #![cfg_attr(test, deny(rust_2018_idioms))]
4 #![cfg_attr(all(test, feature = "full"), deny(unreachable_pub))]
5 // 0.14.x is not actively developed, new warnings just get in the way.
6 //#![cfg_attr(all(test, feature = "full", not(feature = "nightly")), deny(warnings))]
7 #![cfg_attr(all(test, feature = "nightly"), feature(test))]
8 #![cfg_attr(docsrs, feature(doc_cfg))]
9 
10 //! # hyper
11 //!
12 //! hyper is a **fast** and **correct** HTTP implementation written in and for Rust.
13 //!
14 //! ## Features
15 //!
16 //! - HTTP/1 and HTTP/2
17 //! - Asynchronous design
18 //! - Leading in performance
19 //! - Tested and **correct**
20 //! - Extensive production use
21 //! - [Client](client/index.html) and [Server](server/index.html) APIs
22 //!
23 //! If just starting out, **check out the [Guides](https://hyper.rs/guides)
24 //! first.**
25 //!
26 //! ## "Low-level"
27 //!
28 //! hyper is a lower-level HTTP library, meant to be a building block
29 //! for libraries and applications.
30 //!
31 //! If looking for just a convenient HTTP client, consider the
32 //! [reqwest](https://crates.io/crates/reqwest) crate.
33 //!
34 //! # Optional Features
35 //!
36 //! hyper uses a set of [feature flags] to reduce the amount of compiled code.
37 //! It is possible to just enable certain features over others. By default,
38 //! hyper does not enable any features but allows one to enable a subset for
39 //! their use case. Below is a list of the available feature flags. You may
40 //! also notice above each function, struct and trait there is listed one or
41 //! more feature flags that are required for that item to be used.
42 //!
43 //! If you are new to hyper it is possible to enable the `full` feature flag
44 //! which will enable all public APIs. Beware though that this will pull in
45 //! many extra dependencies that you may not need.
46 //!
47 //! The following optional features are available:
48 //!
49 //! - `http1`: Enables HTTP/1 support.
50 //! - `http2`: Enables HTTP/2 support.
51 //! - `client`: Enables the HTTP `client`.
52 //! - `server`: Enables the HTTP `server`.
53 //! - `runtime`: Enables convenient integration with `tokio`, providing
54 //!   connectors and acceptors for TCP, and a default executor.
55 //! - `tcp`: Enables convenient implementations over TCP (using tokio).
56 //! - `stream`: Provides `futures::Stream` capabilities.
57 //! - `backports`: 1.0 functionality backported to 0.14.
58 //! - `deprecated`: opt-in to deprecation warnings to prepare you for 1.0.
59 //!
60 //! [feature flags]: https://doc.rust-lang.org/cargo/reference/manifest.html#the-features-section
61 
62 #[doc(hidden)]
63 pub use http;
64 
65 #[cfg(all(test, feature = "nightly"))]
66 extern crate test;
67 
68 pub use crate::http::{header, Method, Request, Response, StatusCode, Uri, Version};
69 
70 #[doc(no_inline)]
71 pub use crate::http::HeaderMap;
72 
73 pub use crate::body::Body;
74 pub use crate::error::{Error, Result};
75 
76 #[macro_use]
77 mod cfg;
78 #[macro_use]
79 mod common;
80 pub mod body;
81 mod error;
82 pub mod ext;
83 #[cfg(test)]
84 mod mock;
85 pub mod rt;
86 pub mod service;
87 pub mod upgrade;
88 
89 #[cfg(feature = "ffi")]
90 pub mod ffi;
91 
92 cfg_proto! {
93     mod headers;
94     mod proto;
95 }
96 
97 cfg_feature! {
98     #![feature = "client"]
99 
100     pub mod client;
101     #[cfg(any(feature = "http1", feature = "http2"))]
102     #[doc(no_inline)]
103     pub use crate::client::Client;
104 }
105 
106 cfg_feature! {
107     #![feature = "server"]
108 
109     pub mod server;
110     #[doc(no_inline)]
111     pub use crate::server::Server;
112 }
113