Files
GopherGate/target/doc/hyper/ext/index.html
2026-02-26 12:00:21 -05:00

25 lines
7.0 KiB
HTML

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Extensions for HTTP messages in Hyper."><title>hyper::ext - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="hyper" data-themes="" data-resource-suffix="" data-rustdoc-version="1.93.1 (01f6ddf75 2026-02-11) (Arch Linux rust 1:1.93.1-1)" data-channel="1.93.1" data-search-js="search-9e2438ea.js" data-stringdex-js="stringdex-a3946164.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../static.files/main-a410ff4d.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><rustdoc-topbar><h2><a href="#">Module ext</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../hyper/index.html">hyper</a><span class="version">1.8.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Module ext</a></h2><h3><a href="#">Sections</a></h3><ul class="block top-toc"><li><a href="#what-are-extensions" title="What are extensions?">What are extensions?</a></li><li><a href="#how-to-access-extensions" title="How to access extensions">How to access extensions</a></li><li><a href="#extension-groups" title="Extension Groups">Extension Groups</a></li></ul><h3><a href="#structs">Module Items</a></h3><ul class="block"><li><a href="#structs" title="Structs">Structs</a></li><li><a href="#functions" title="Functions">Functions</a></li></ul></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="../index.html">In crate hyper</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">hyper</a></div><h1>Module <span>ext</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../src/hyper/ext/mod.rs.html#1-295">Source</a> </span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Extensions for HTTP messages in Hyper.</p>
<p>This module provides types and utilities that extend the capabilities of HTTP requests and responses
in Hyper. Extensions are additional pieces of information or features that can be attached to HTTP
messages via the <a href="../../http/extensions/struct.Extensions.html" title="struct http::extensions::Extensions"><code>http::Extensions</code></a> map, which is
accessible through methods like <a href="../../http/request/struct.Request.html#method.extensions" title="method http::request::Request::extensions"><code>http::Request::extensions</code></a> and <a href="../../http/response/struct.Response.html#method.extensions" title="method http::response::Response::extensions"><code>http::Response::extensions</code></a>.</p>
<h2 id="what-are-extensions"><a class="doc-anchor" href="#what-are-extensions">§</a>What are extensions?</h2>
<p>Extensions allow Hyper to associate extra metadata or behaviors with HTTP messages, beyond the standard
headers and body. These can be used by advanced users and library authors to access protocol-specific
features, track original header casing, handle informational responses, and more.</p>
<h2 id="how-to-access-extensions"><a class="doc-anchor" href="#how-to-access-extensions">§</a>How to access extensions</h2>
<p>Extensions are stored in the <code>Extensions</code> map of a request or response. You can access them using:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">if let </span><span class="prelude-val">Some</span>(ext) = response.extensions().get::&lt;hyper::ext::ReasonPhrase&gt;() {
<span class="comment">// use the extension
</span>}</code></pre></div><h2 id="extension-groups"><a class="doc-anchor" href="#extension-groups">§</a>Extension Groups</h2>
<p>The extensions in this module can be grouped as follows:</p>
<ul>
<li><strong>HTTP/1 Reason Phrase</strong>: <a href="struct.ReasonPhrase.html" title="struct hyper::ext::ReasonPhrase"><code>ReasonPhrase</code></a> — Access non-canonical reason phrases in HTTP/1 responses.</li>
<li><strong>Informational Responses</strong>: <a href="fn.on_informational.html" title="fn hyper::ext::on_informational"><code>on_informational</code></a> — Register callbacks for 1xx HTTP/1 responses on the client.</li>
<li><strong>Header Case Tracking</strong>: Internal types for tracking the original casing and order of headers as received.</li>
<li><strong>HTTP/2 Protocol Extensions</strong>: <a href="struct.Protocol.html" title="struct hyper::ext::Protocol"><code>Protocol</code></a> — Access the <code>:protocol</code> pseudo-header for Extended CONNECT in HTTP/2.</li>
</ul>
<p>Some extensions are only available for specific protocols (HTTP/1 or HTTP/2) or use cases (client, server, FFI).</p>
<p>See the documentation on each item for details about its usage and requirements.</p>
</div></details><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><dl class="item-table"><dt><a class="struct" href="struct.Protocol.html" title="struct hyper::ext::Protocol">Protocol</a></dt><dd>Extension type representing the <code>:protocol</code> pseudo-header in HTTP/2.</dd><dt><a class="struct" href="struct.ReasonPhrase.html" title="struct hyper::ext::ReasonPhrase">Reason<wbr>Phrase</a></dt><dd>A reason phrase in an HTTP/1 response.</dd></dl><h2 id="functions" class="section-header">Functions<a href="#functions" class="anchor">§</a></h2><dl class="item-table"><dt><a class="fn" href="fn.on_informational.html" title="fn hyper::ext::on_informational">on_<wbr>informational</a></dt><dd>Add a callback for 1xx informational responses.</dd></dl></section></div></main></body></html>