<div align="center">
<img src="./logo.png" alt="Fetch Hyper Logo" width="96">
# Fetch Hyper
[](https://crates.io/crates/fetch_hyper)
[](https://docs.rs/fetch_hyper)
[](https://crates.io/crates/fetch_hyper)
[](https://github.com/microsoft/oxidizer/actions/workflows/main.yml)
[](https://codecov.io/gh/microsoft/oxidizer)
[](../../LICENSE)
<a href="../.."><img src="../../logo.svg" alt="This crate was developed as part of the Oxidizer project" width="20"></a>
</div>
Hyper-based HTTP transport.
## Internal implementation detail
This crate is an **internal implementation detail** of the `SDK`. It is not
part of the public API surface and must not be re-exported from any other
crate. Consumers should depend on the higher-level `SDK` crates instead of
taking a direct dependency on `fetch_hyper`, and `SDK` crates that do depend
on it must keep its types out of their own public APIs (no `pub use`,
no types appearing in public function signatures, trait bounds, or
associated types).
No stability guarantees are offered: items may be added, renamed, removed,
or have their semantics changed in any release — including patch releases —
without notice.
Narrow scope: just the transport that issues HTTP/1.1 or HTTP/2 requests
over `TLS` (or plain-text). No higher-level pipeline, retry, caching, etc.
The entry points are:
* [`HyperTransportBuilder`][__link0]: generic over a user-supplied [`Connect`][__link1]
service. Exposes setters for the few knobs driving our own logic plus a
[`configure_hyper`][__link2] escape
hatch for `hyper`’s own builder.
* [`HyperTransport`][__link3]: the type-erased [`RequestHandler`][__link4] produced
by [`HyperTransportBuilder::build`][__link5].
The runtime is supplied entirely by the caller via an
[`anyspawn::Spawner`][__link6] together with any service implementing [`Connect`][__link7].
<hr/>
<sub>
This crate was developed as part of <a href="../..">The Oxidizer Project</a>. Browse this crate's <a href="https://github.com/microsoft/oxidizer/tree/main/crates/fetch_hyper">source code</a>.
</sub>
[__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQbLiTyV0MU86EbZU15e0PmecoboQ9jo59bnAEbyDXw04U13GlhYvRhcoQbbsmHAnNeS6Yb0KCzC29u2TcbXVFDR4jSRbUbztoQvIRhtHlhZIOCaGFueXNwYXduZTAuNS4ygmtmZXRjaF9oeXBlcmUwLjEuNIJvaHR0cF9leHRlbnNpb25zZTAuNC40
[__link0]: https://docs.rs/fetch_hyper/0.1.4/fetch_hyper/?search=HyperTransportBuilder
[__link1]: https://docs.rs/fetch_hyper/0.1.4/fetch_hyper/?search=Connect
[__link2]: https://docs.rs/fetch_hyper/0.1.4/fetch_hyper/?search=HyperTransportBuilder::configure_hyper
[__link3]: https://docs.rs/fetch_hyper/0.1.4/fetch_hyper/?search=HyperTransport
[__link4]: https://docs.rs/http_extensions/0.4.4/http_extensions/?search=RequestHandler
[__link5]: https://docs.rs/fetch_hyper/0.1.4/fetch_hyper/?search=HyperTransportBuilder::build
[__link6]: https://docs.rs/anyspawn/0.5.2/anyspawn/?search=Spawner
[__link7]: https://docs.rs/fetch_hyper/0.1.4/fetch_hyper/?search=Connect