blob: c0ffe3e9007581741df413993159fdddfd925ac1 [file] [log] [blame]
<!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="URLs use special characters to indicate the parts of the request. For example, a `?` question mark marks the end of a path and the start of a query string. In order for that character to exist inside a path, it needs to be encoded differently."><meta name="keywords" content="rust, rustlang, rust-lang, percent_encoding"><title>percent_encoding - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" href="../normalize.css"><link rel="stylesheet" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" href="../ayu.css" disabled><link rel="stylesheet" href="../dark.css" disabled><link rel="stylesheet" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script defer src="../crates.js"></script><script defer src="../main.js"></script><noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../favicon.svg"></head><body class="rustdoc mod crate"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button><a class="sidebar-logo" href="../percent_encoding/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../percent_encoding/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></div></a><h2 class="location"><a href="#">Crate percent_encoding</a></h2><div class="sidebar-elems"><ul class="block"><li class="version">Version 2.2.0</li><li><a id="all-types" href="all.html">All Items</a></li></ul><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#constants">Constants</a></li><li><a href="#functions">Functions</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Crate <a class="mod" href="#">percent_encoding</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../src/percent_encoding/lib.rs.html#9-468">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>URLs use special characters to indicate the parts of the request.
For example, a <code>?</code> question mark marks the end of a path and the start of a query string.
In order for that character to exist inside a path, it needs to be encoded differently.</p>
<p>Percent encoding replaces reserved characters with the <code>%</code> escape character
followed by a byte value as two hexadecimal digits.
For example, an ASCII space is replaced with <code>%20</code>.</p>
<p>When encoding, the set of characters that can (and should, for readability) be left alone
depends on the context.
The <code>?</code> question mark mentioned above is not a separator when used literally
inside of a query string, and therefore does not need to be encoded.
The <a href="struct.AsciiSet.html" title="AsciiSet"><code>AsciiSet</code></a> parameter of <a href="fn.percent_encode.html" title="percent_encode"><code>percent_encode</code></a> and <a href="fn.utf8_percent_encode.html" title="utf8_percent_encode"><code>utf8_percent_encode</code></a>
lets callers configure this.</p>
<p>This crate deliberately does not provide many different sets.
Users should consider in what context the encoded string will be used,
read relevant specifications, and define their own set.
This is done by using the <code>add</code> method of an existing set.</p>
<h2 id="examples"><a href="#examples">Examples</a></h2>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>percent_encoding::{utf8_percent_encode, AsciiSet, CONTROLS};
<span class="doccomment">/// https://url.spec.whatwg.org/#fragment-percent-encode-set
</span><span class="kw">const </span>FRAGMENT: <span class="kw-2">&amp;</span>AsciiSet = <span class="kw-2">&amp;</span>CONTROLS.add(<span class="string">b&#39; &#39;</span>).add(<span class="string">b&#39;&quot;&#39;</span>).add(<span class="string">b&#39;&lt;&#39;</span>).add(<span class="string">b&#39;&gt;&#39;</span>).add(<span class="string">b&#39;`&#39;</span>);
<span class="macro">assert_eq!</span>(utf8_percent_encode(<span class="string">&quot;foo &lt;bar&gt;&quot;</span>, FRAGMENT).to_string(), <span class="string">&quot;foo%20%3Cbar%3E&quot;</span>);</code></pre></div>
</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.AsciiSet.html" title="percent_encoding::AsciiSet struct">AsciiSet</a></div><div class="item-right docblock-short">Represents a set of characters or bytes in the ASCII range.</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.PercentDecode.html" title="percent_encoding::PercentDecode struct">PercentDecode</a></div><div class="item-right docblock-short">The return type of <a href="fn.percent_decode.html" title="percent_decode"><code>percent_decode</code></a>.</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.PercentEncode.html" title="percent_encoding::PercentEncode struct">PercentEncode</a></div><div class="item-right docblock-short">The return type of <a href="fn.percent_encode.html" title="percent_encode"><code>percent_encode</code></a> and <a href="fn.utf8_percent_encode.html" title="utf8_percent_encode"><code>utf8_percent_encode</code></a>.</div></div></div><h2 id="constants" class="small-section-header"><a href="#constants">Constants</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="constant" href="constant.CONTROLS.html" title="percent_encoding::CONTROLS constant">CONTROLS</a></div><div class="item-right docblock-short">The set of 0x00 to 0x1F (C0 controls), and 0x7F (DEL).</div></div><div class="item-row"><div class="item-left module-item"><a class="constant" href="constant.NON_ALPHANUMERIC.html" title="percent_encoding::NON_ALPHANUMERIC constant">NON_ALPHANUMERIC</a></div><div class="item-right docblock-short">Everything that is not an ASCII letter or digit.</div></div></div><h2 id="functions" class="small-section-header"><a href="#functions">Functions</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.percent_decode.html" title="percent_encoding::percent_decode fn">percent_decode</a></div><div class="item-right docblock-short">Percent-decode the given bytes.</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.percent_decode_str.html" title="percent_encoding::percent_decode_str fn">percent_decode_str</a></div><div class="item-right docblock-short">Percent-decode the given string.</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.percent_encode.html" title="percent_encoding::percent_encode fn">percent_encode</a></div><div class="item-right docblock-short">Percent-encode the given bytes with the given set.</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.percent_encode_byte.html" title="percent_encoding::percent_encode_byte fn">percent_encode_byte</a></div><div class="item-right docblock-short">Return the percent-encoding of the given byte.</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.utf8_percent_encode.html" title="percent_encoding::utf8_percent_encode fn">utf8_percent_encode</a></div><div class="item-right docblock-short">Percent-encode the UTF-8 encoding of the given string.</div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="percent_encoding" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.66.0-nightly (5c8bff74b 2022-10-21)" ></div></body></html>