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