1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
//! Utilities for working with hyper.
//!
//! This crate is less-stable than [`hyper`](https://docs.rs/hyper). However,
//! does respect Rust's semantic version regarding breaking changes.
//!
//! # Feature flags
//!
//! `hyper-util` relies on feature flags to allow dependents to opt into
//! building particular components. None of these feature flags are enabled by
//! default. You may use the `full` feature flag to enable all of the standard
//! features.
//!
//! Note that the `full` feature flag may introduce superfluous dependencies.
//! You may improve compilation times by enabling the individual features that
//! you need.
//!
//! **Client features**
//!
//! * `client`: Enable [`client`] interfaces.
//! * `client-legacy`: Enable the legacy
//! [`Client`][crate::client::legacy::Client] implementation.
//! * `client-pool`: Enable [`client::pool`]. This submodule contains
//! interfaces for constructing connection pools.
//! * `client-proxy`: Enable [`client::proxy`].
//! * `client-proxy-system`: Enable platform-specific system proxy support.
//!
//! **Server features**
//!
//! * `server`: Enable [`server`] interfaces.
//! * `server-auto`: Enable automatic HTTP version.
//! * `server-graceful`: Enable [`server::graceful`] interfaces for gracefully
//! shutting down a server. See the module-level documentation of
//! [`server::graceful`] for more information.
//!
//! **Other features**
//!
//! * `service`: Enable [`service`] interfaces for compatibility with tower's
//! [`Service`][tower_service::Service]. See the module-level documentation
//! of [`service`] for more information.
//! * `http1`: Enable HTTP/1 support.
//! * `http2`: Enable HTTP/2 support.
//! * `tokio`: Enable [`rt::tokio`] runtime components to integrate with
//! [`tokio`]. See the module-level documentation of [`rt::tokio`] for more
//! information.
//! * `tracing`: Enable [`rt::tracing`] runtime components to integrate with
//! [`tracing`]. See the module-level documentation of [`rt::tracing`] for
//! more information.
//! * `rt-tracing-exec-force`: A temporary compatibility opt-in feature to
//! facilitate migrating telemetry from v0.1.20. If set,
//! [`rt::tokio::TokioExecutor<I>`] will continue to propagate the current
//! [`tracing::Span`] to spawned tasks. This may be removed in a future
//! release. Note that this feature is **not** included in the `full`
//! feature set, and must be explicitly enabled. See
//! [#322](https://github.com/hyperium/hyper-util/pull/322) and
//! [#323](https://github.com/hyperium/hyper-util/pull/323) for more
//! information.