Auto Generated Documentation

This commit is contained in:
github-actions[bot]
2025-04-02 13:41:38 +00:00
parent e9a232e07d
commit 21efed14f2
18523 changed files with 340249 additions and 282417 deletions
+67 -53
View File
@@ -1,76 +1,90 @@
<!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="githubcrates-iodocs-rs"><meta name="keywords" content="rust, rustlang, rust-lang, indoc"><title>indoc - Rust</title><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><link rel="stylesheet" type="text/css" href="../dark.css" disabled ><link rel="stylesheet" type="text/css" href="../ayu.css" disabled ><script id="default-settings"></script><script src="../storage.js"></script><script src="../crates.js"></script><noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="icon" type="image/svg+xml" href="../favicon.svg">
<link rel="alternate icon" type="image/png" href="../favicon-16x16.png">
<link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("../down-arrow.svg");}</style></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]--><nav class="sidebar"><div class="sidebar-menu" role="button">&#9776;</div><a href='../indoc/index.html'><div class='logo-container rust-logo'><img src='../rust-logo.png' alt='logo'></div></a><p class="location">Crate indoc</p><div class="block version"><p>Version 0.3.6</p></div><div class="sidebar-elems"><a id="all-types" href="all.html"><p>See all indoc's items</p></a><div class="block items"><ul><li><a href="#macros">Macros</a></li></ul></div><p class="location"></p><div id="sidebar-vars" data-name="indoc" data-ty="mod" data-relpath="../"></div><script defer src="../sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu"><img src="../brush.svg" width="18" height="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><button type="button" class="help-button">?</button>
<a id="settings-menu" href="../settings.html"><img src="../wheel.svg" width="18" height="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class="fqn"><span class="in-band">Crate <a class="mod" href="">indoc</a><button id="copy-path" onclick="copy_path(this)"></button></span><span class="out-of-band"><span id="render-detail"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span><a class="srclink" href="../src/indoc/lib.rs.html#1-107" title="goto source code">[src]</a></span></h1><div class="docblock"><p><a href="https://github.com/dtolnay/indoc"><img src="https://img.shields.io/badge/github-8da0cb?style=for-the-badge&amp;labelColor=555555&amp;logo=github" alt="github" /></a><a href="https://crates.io/crates/indoc"><img src="https://img.shields.io/badge/crates.io-fc8d62?style=for-the-badge&amp;labelColor=555555&amp;logo=rust" alt="crates-io" /></a><a href="https://docs.rs/indoc"><img src="https://img.shields.io/badge/docs.rs-66c2a5?style=for-the-badge&amp;labelColor=555555&amp;logoColor=white&amp;logo=data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPjxwYXRoIGZpbGw9IiNmNWY1ZjUiIGQ9Ik00ODguNiAyNTAuMkwzOTIgMjE0VjEwNS41YzAtMTUtOS4zLTI4LjQtMjMuNC0zMy43bC0xMDAtMzcuNWMtOC4xLTMuMS0xNy4xLTMuMS0yNS4zIDBsLTEwMCAzNy41Yy0xNC4xIDUuMy0yMy40IDE4LjctMjMuNCAzMy43VjIxNGwtOTYuNiAzNi4yQzkuMyAyNTUuNSAwIDI2OC45IDAgMjgzLjlWMzk0YzAgMTMuNiA3LjcgMjYuMSAxOS45IDMyLjJsMTAwIDUwYzEwLjEgNS4xIDIyLjEgNS4xIDMyLjIgMGwxMDMuOS01MiAxMDMuOSA1MmMxMC4xIDUuMSAyMi4xIDUuMSAzMi4yIDBsMTAwLTUwYzEyLjItNi4xIDE5LjktMTguNiAxOS45LTMyLjJWMjgzLjljMC0xNS05LjMtMjguNC0yMy40LTMzLjd6TTM1OCAyMTQuOGwtODUgMzEuOXYtNjguMmw4NS0zN3Y3My4zek0xNTQgMTA0LjFsMTAyLTM4LjIgMTAyIDM4LjJ2LjZsLTEwMiA0MS40LTEwMi00MS40di0uNnptODQgMjkxLjFsLTg1IDQyLjV2LTc5LjFsODUtMzguOHY3NS40em0wLTExMmwtMTAyIDQxLjQtMTAyLTQxLjR2LS42bDEwMi0zOC4yIDEwMiAzOC4ydi42em0yNDAgMTEybC04NSA0Mi41di03OS4xbDg1LTM4Ljh2NzUuNHptMC0xMTJsLTEwMiA0MS40LTEwMi00MS40di0uNmwxMDItMzguMiAxMDIgMzguMnYuNnoiPjwvcGF0aD48L3N2Zz4K" alt="docs-rs" /></a></p>
<!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="githubcrates-iodocs-rs"><title>indoc - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Regular-0fe48ade.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" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../static.files/rustdoc-46132b98.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="indoc" data-themes="" data-resource-suffix="" data-rustdoc-version="1.85.1 (4eb161250 2025-03-15)" data-channel="1.85.1" data-search-js="search-75f5ac3e.js" data-settings-js="settings-0f613d39.js" ><script src="../static.files/storage-59e33391.js"></script><script defer src="../crates.js"></script><script defer src="../static.files/main-5f194d8c.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-893ab5e7.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-6580c154.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-044be391.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" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../indoc/index.html">indoc</a><span class="version">2.0.6</span></h2></div><div class="sidebar-elems"><ul class="block"><li><a id="all-types" href="all.html">All Items</a></li></ul><section id="rustdoc-toc"><h3><a href="#">Sections</a></h3><ul class="block top-toc"><li><a href="#using-indoc" title="Using indoc">Using indoc</a></li><li><a href="#formatting-macros" title="Formatting macros">Formatting macros</a></li><li><a href="#explanation" title="Explanation">Explanation</a></li></ul><h3><a href="#macros">Crate Items</a></h3><ul class="block"><li><a href="#macros" title="Macros">Macros</a></li></ul></section><div id="rustdoc-modnav"></div></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><rustdoc-search></rustdoc-search><section id="main-content" class="content"><div class="main-heading"><h1>Crate <span>indoc</span><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/indoc/lib.rs.html#1-501">Source</a> </span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p><a href="https://github.com/dtolnay/indoc"><img src="https://img.shields.io/badge/github-8da0cb?style=for-the-badge&amp;labelColor=555555&amp;logo=github" alt="github" /></a><a href="https://crates.io/crates/indoc"><img src="https://img.shields.io/badge/crates.io-fc8d62?style=for-the-badge&amp;labelColor=555555&amp;logo=rust" alt="crates-io" /></a><a href="https://docs.rs/indoc"><img src="https://img.shields.io/badge/docs.rs-66c2a5?style=for-the-badge&amp;labelColor=555555&amp;logo=docs.rs" alt="docs-rs" /></a></p>
<br>
<p>This crate provides a procedural macro for indented string literals. The
<code>indoc!()</code> macro takes a multiline string literal and un-indents it so the
leftmost non-space character is in the first column.</p>
<pre><code class="language-toml">[dependencies]
indoc = &quot;0.3&quot;
</code></pre>
<p>Release notes are available under <a href="https://github.com/dtolnay/indoc/releases">GitHub releases</a>.</p>
<h1 id="using-indoc" class="section-header"><a href="#using-indoc">Using Indoc</a></h1>
<div class="example-wrap"><pre class="rust rust-example-rendered">
<span class="kw">use</span> <span class="ident">indoc::indoc</span>;
<code>indoc!()</code> macro takes a multiline string literal and un-indents it at
compile time so the leftmost non-space character is in the first column.</p>
<div class="example-wrap"><pre class="language-toml"><code>[dependencies]
indoc = &quot;2&quot;</code></pre></div><br>
<h2 id="using-indoc"><a class="doc-anchor" href="#using-indoc">§</a>Using indoc</h2>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>indoc::indoc;
<span class="kw">fn</span> <span class="ident">main</span>() {
<span class="kw">let</span> <span class="ident">testing</span> <span class="op">=</span> <span class="macro">indoc!</span>(<span class="string">&quot;
<span class="kw">fn </span>main() {
<span class="kw">let </span>testing = <span class="macro">indoc!</span> {<span class="string">"
def hello():
print(&#39;Hello, world!&#39;)
print('Hello, world!')
hello()
&quot;</span>);
<span class="kw">let</span> <span class="ident">expected</span> <span class="op">=</span> <span class="string">&quot;def hello():\n print(&#39;Hello, world!&#39;)\n\nhello()\n&quot;</span>;
<span class="macro">assert_eq!</span>(<span class="ident">testing</span>, <span class="ident">expected</span>);
}</pre></div>
"</span>};
<span class="kw">let </span>expected = <span class="string">"def hello():\n print('Hello, world!')\n\nhello()\n"</span>;
<span class="macro">assert_eq!</span>(testing, expected);
}</code></pre></div>
<p>Indoc also works with raw string literals:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered">
<span class="kw">use</span> <span class="ident">indoc::indoc</span>;
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>indoc::indoc;
<span class="kw">fn</span> <span class="ident">main</span>() {
<span class="kw">let</span> <span class="ident">testing</span> <span class="op">=</span> <span class="macro">indoc!</span>(<span class="string">r#&quot;
<span class="kw">fn </span>main() {
<span class="kw">let </span>testing = <span class="macro">indoc!</span> {<span class="string">r#"
def hello():
print(&quot;Hello, world!&quot;)
print("Hello, world!")
hello()
&quot;#</span>);
<span class="kw">let</span> <span class="ident">expected</span> <span class="op">=</span> <span class="string">&quot;def hello():\n print(\&quot;Hello, world!\&quot;)\n\nhello()\n&quot;</span>;
<span class="macro">assert_eq!</span>(<span class="ident">testing</span>, <span class="ident">expected</span>);
}</pre></div>
"#</span>};
<span class="kw">let </span>expected = <span class="string">"def hello():\n print(\"Hello, world!\")\n\nhello()\n"</span>;
<span class="macro">assert_eq!</span>(testing, expected);
}</code></pre></div>
<p>And byte string literals:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered">
<span class="kw">use</span> <span class="ident">indoc::indoc</span>;
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>indoc::indoc;
<span class="kw">fn</span> <span class="ident">main</span>() {
<span class="kw">let</span> <span class="ident">testing</span> <span class="op">=</span> <span class="macro">indoc!</span>(<span class="string">b&quot;
<span class="kw">fn </span>main() {
<span class="kw">let </span>testing = <span class="macro">indoc!</span> {<span class="string">b"
def hello():
print(&#39;Hello, world!&#39;)
print('Hello, world!')
hello()
&quot;</span>);
<span class="kw">let</span> <span class="ident">expected</span> <span class="op">=</span> <span class="string">b&quot;def hello():\n print(&#39;Hello, world!&#39;)\n\nhello()\n&quot;</span>;
<span class="macro">assert_eq!</span>(<span class="ident">testing</span>[..], <span class="ident">expected</span>[..]);
}</pre></div>
<h1 id="explanation" class="section-header"><a href="#explanation">Explanation</a></h1>
"</span>};
<span class="kw">let </span>expected = <span class="string">b"def hello():\n print('Hello, world!')\n\nhello()\n"</span>;
<span class="macro">assert_eq!</span>(testing[..], expected[..]);
}</code></pre></div>
<p><br><br></p>
<h2 id="formatting-macros"><a class="doc-anchor" href="#formatting-macros">§</a>Formatting macros</h2>
<p>The indoc crate exports five additional macros to substitute conveniently
for the standard librarys formatting macros:</p>
<ul>
<li><code>formatdoc!($fmt, ...)</code> — equivalent to <code>format!(indoc!($fmt), ...)</code></li>
<li><code>printdoc!($fmt, ...)</code> — equivalent to <code>print!(indoc!($fmt), ...)</code></li>
<li><code>eprintdoc!($fmt, ...)</code> — equivalent to <code>eprint!(indoc!($fmt), ...)</code></li>
<li><code>writedoc!($dest, $fmt, ...)</code> — equivalent to <code>write!($dest, indoc!($fmt), ...)</code></li>
<li><code>concatdoc!(...)</code> — equivalent to <code>concat!(...)</code> with each string literal wrapped in <code>indoc!</code></li>
</ul>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>indoc::{concatdoc, printdoc};
<span class="kw">const </span>HELP: <span class="kw-2">&amp;</span>str = <span class="macro">concatdoc!</span> {<span class="string">"
Usage: "</span>, <span class="macro">env!</span>(<span class="string">"CARGO_BIN_NAME"</span>), <span class="string">" [options]
Options:
-h, --help
"</span>};
<span class="kw">fn </span>main() {
<span class="macro">printdoc!</span> {<span class="string">"
GET {url}
Accept: {mime}
"</span>,
url = <span class="string">"http://localhost:8080"</span>,
mime = <span class="string">"application/json"</span>,
}
}</code></pre></div>
<p><br><br></p>
<h2 id="explanation"><a class="doc-anchor" href="#explanation">§</a>Explanation</h2>
<p>The following rules characterize the behavior of the <code>indoc!()</code> macro:</p>
<ol>
<li>Count the leading spaces of each line, ignoring the first line and any lines
that are empty or contain spaces only.</li>
<li>Count the leading spaces of each line, ignoring the first line and any
lines that are empty or contain spaces only.</li>
<li>Take the minimum.</li>
<li>If the first line is empty i.e. the string begins with a newline, remove the
first line.</li>
<li>If the first line is empty i.e. the string begins with a newline, remove
the first line.</li>
<li>Remove the computed number of spaces from the beginning of each line.</li>
</ol>
<p>This means there are a few equivalent ways to format the same string, so choose
one you like. All of the following result in the string <code>&quot;line one\nline two\n&quot;</code>:</p>
<pre><code class="language-text">indoc!(&quot; / indoc!( / indoc!(&quot;line one
line one / &quot;line one / line two
line two / line two / &quot;)
&quot;) / &quot;) /
</code></pre>
</div><h2 id="macros" class="section-header"><a href="#macros">Macros</a></h2>
<table><tr class="module-item"><td><a class="macro" href="macro.indoc.html" title="indoc::indoc macro">indoc</a></td><td class="docblock-short"></td></tr></table></section><section id="search" class="content hidden"></section><div id="rustdoc-vars" data-root-path="../" data-current-crate="indoc" data-search-index-js="../search-index.js" data-search-js="../search.js"></div>
<script src="../main.js"></script></body></html>
</div></details><h2 id="macros" class="section-header">Macros<a href="#macros" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="macro" href="macro.concatdoc.html" title="macro indoc::concatdoc">concatdoc</a></div><div class="desc docblock-short">Unindent and call <code>concat!</code>.</div></li><li><div class="item-name"><a class="macro" href="macro.eprintdoc.html" title="macro indoc::eprintdoc">eprintdoc</a></div><div class="desc docblock-short">Unindent and call <code>eprint!</code>.</div></li><li><div class="item-name"><a class="macro" href="macro.formatdoc.html" title="macro indoc::formatdoc">formatdoc</a></div><div class="desc docblock-short">Unindent and call <code>format!</code>.</div></li><li><div class="item-name"><a class="macro" href="macro.indoc.html" title="macro indoc::indoc">indoc</a></div><div class="desc docblock-short">Unindent and produce <code>&amp;'static str</code> or <code>&amp;'static [u8]</code>.</div></li><li><div class="item-name"><a class="macro" href="macro.printdoc.html" title="macro indoc::printdoc">printdoc</a></div><div class="desc docblock-short">Unindent and call <code>print!</code>.</div></li><li><div class="item-name"><a class="macro" href="macro.writedoc.html" title="macro indoc::writedoc">writedoc</a></div><div class="desc docblock-short">Unindent and call <code>write!</code>.</div></li></ul></section></div></main></body></html>