Files
google_speech_rs/docs/indoc/index.html
T
2021-06-02 05:29:43 +00:00

76 lines
9.2 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!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 8]><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></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><script src="../theme.js"></script><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></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>
<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</span>::<span class="ident">indoc</span>;
<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="macro">!</span>(<span class="string">&quot;
def hello():
print(&#39;Hello, world!&#39;)
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="macro">!</span>(<span class="ident">testing</span>, <span class="ident">expected</span>);
}</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</span>::<span class="ident">indoc</span>;
<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="macro">!</span>(<span class="string">r#&quot;
def hello():
print(&quot;Hello, world!&quot;)
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="macro">!</span>(<span class="ident">testing</span>, <span class="ident">expected</span>);
}</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</span>::<span class="ident">indoc</span>;
<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="macro">!</span>(<span class="string">b&quot;
def hello():
print(&#39;Hello, world!&#39;)
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="macro">!</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>
<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>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>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><section class="footer"></section><div id="rustdoc-vars" data-root-path="../" data-current-crate="indoc" data-search-js="../search-index.js"></div>
<script src="../main.js"></script></body></html>