doc: 2020-04-01 11:32:45 +0200: 478563f - Adding documentation

This commit is contained in:
2020-04-01 11:47:07 +02:00
commit 527969729d
14503 changed files with 1738402 additions and 0 deletions

3
quick_error/all.html Normal file
View File

@@ -0,0 +1,3 @@
<!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="List of all items in this crate"><meta name="keywords" content="rust, rustlang, rust-lang"><title>List of all items in this crate</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="../dark.css"><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script src="../storage.js"></script><noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="shortcut icon" href="../favicon.ico"><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">&#9776;</div><a href='../quick_error/index.html'><div class='logo-container'><img src='../rust-logo.png' alt='logo'></div></a></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></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><a id="settings-menu" href="../settings.html"><img src="../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><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>
</span>
<span class='in-band'>List of all items</span></h1><h3 id='Structs'>Structs</h3><ul class='structs docblock'><li><a href='struct.Context.html'>Context</a></li></ul><h3 id='Traits'>Traits</h3><ul class='traits docblock'><li><a href='trait.ResultExt.html'>ResultExt</a></li></ul><h3 id='Macros'>Macros</h3><ul class='macros docblock'><li><a href='macro.quick_error.html'>quick_error</a></li></ul></section><section id="search" class="content hidden"></section><section class="footer"></section><script>window.rootPath = "../";window.currentCrate = "quick_error";</script><script src="../aliases.js"></script><script src="../main.js"></script><script defer src="../search-index.js"></script></body></html>

229
quick_error/index.html Normal file
View File

@@ -0,0 +1,229 @@
<!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="API documentation for the Rust `quick_error` crate."><meta name="keywords" content="rust, rustlang, rust-lang, quick_error"><title>quick_error - 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="../dark.css"><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script src="../storage.js"></script><noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="shortcut icon" href="../favicon.ico"><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">&#9776;</div><a href='../quick_error/index.html'><div class='logo-container'><img src='../rust-logo.png' alt='logo'></div></a><p class='location'>Crate quick_error</p><div class="sidebar-elems"><a id='all-types' href='all.html'><p>See all quick_error's items</p></a><div class="block items"><ul><li><a href="#macros">Macros</a></li><li><a href="#structs">Structs</a></li><li><a href="#traits">Traits</a></li></ul></div><p class='location'></p><script>window.sidebarCurrent = {name: 'quick_error', ty: 'mod', relpath: '../'};</script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></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><a id="settings-menu" href="../settings.html"><img src="../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><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/quick_error/lib.rs.html#1-1262' title='goto source code'>[src]</a></span><span class='in-band'>Crate <a class="mod" href=''>quick_error</a></span></h1><div class='docblock'><p>A macro which makes errors easy to write</p>
<p>Minimum type is like this:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered">
<span class="attribute">#[<span class="ident">macro_use</span>]</span> <span class="kw">extern</span> <span class="kw">crate</span> <span class="ident">quick_error</span>;
<span class="macro">quick_error</span><span class="macro">!</span> {
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">SomeError</span> {
<span class="ident">Variant1</span> {}
}
}</pre></div>
<p>Both <code>pub</code> and non-public types may be declared, and all meta attributes
(such as <code>#[derive(Debug)]</code>) are forwarded as is. The <code>Debug</code> must be
implemented (but you may do that yourself if you like). The documentation
comments <code>/// something</code> (as well as other meta attrbiutes) on variants
are allowed.</p>
<h1 id="allowed-syntax" class="section-header"><a href="#allowed-syntax">Allowed Syntax</a></h1>
<p>You may add arbitrary parameters to any struct variant:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered">
<span class="macro">quick_error</span><span class="macro">!</span> {
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">SomeError</span> {
<span class="doccomment">/// IO Error</span>
<span class="ident">Io</span>(<span class="ident">err</span>: <span class="ident">std</span>::<span class="ident">io</span>::<span class="ident">Error</span>) {}
<span class="doccomment">/// Utf8 Error</span>
<span class="ident">Utf8</span>(<span class="ident">err</span>: <span class="ident">std</span>::<span class="ident">str</span>::<span class="ident">Utf8Error</span>) {}
}
}</pre></div>
<p>Note unlike in normal Enum declarations you declare names of fields (which
are omitted from type). How they can be used is outlined below.</p>
<p>Now you might have noticed trailing braces <code>{}</code>. They are used to define
implementations. By default:</p>
<ul>
<li><code>Error::cause()</code> returns None (even if type wraps some value)</li>
<li><code>Display</code> outputs debug representation</li>
<li>No <code>From</code> implementations are defined</li>
</ul>
<div class="example-wrap"><pre class="rust rust-example-rendered">
<span class="macro">quick_error</span><span class="macro">!</span> {
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">SomeError</span> {
<span class="ident">Io</span>(<span class="ident">err</span>: <span class="ident">std</span>::<span class="ident">io</span>::<span class="ident">Error</span>) {
<span class="ident">display</span>(<span class="string">&quot;{}&quot;</span>, <span class="ident">err</span>)
}
<span class="ident">Utf8</span>(<span class="ident">err</span>: <span class="ident">std</span>::<span class="ident">str</span>::<span class="ident">Utf8Error</span>) {
<span class="ident">display</span>(<span class="string">&quot;utf8 error&quot;</span>)
}
}
}</pre></div>
<p>To change <code>cause</code> method to return some error, add <code>cause(value)</code>, for
example:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered">
<span class="macro">quick_error</span><span class="macro">!</span> {
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">SomeError</span> {
<span class="ident">Io</span>(<span class="ident">err</span>: <span class="ident">std</span>::<span class="ident">io</span>::<span class="ident">Error</span>) {
<span class="ident">cause</span>(<span class="ident">err</span>)
}
<span class="ident">Utf8</span>(<span class="ident">err</span>: <span class="ident">std</span>::<span class="ident">str</span>::<span class="ident">Utf8Error</span>) {
<span class="ident">display</span>(<span class="string">&quot;utf8 error&quot;</span>)
}
<span class="ident">Other</span>(<span class="ident">err</span>: <span class="ident">Box</span><span class="op">&lt;</span><span class="ident">std</span>::<span class="ident">error</span>::<span class="ident">Error</span><span class="op">&gt;</span>) {
<span class="ident">cause</span>(<span class="kw-2">&amp;</span><span class="kw-2">*</span><span class="kw-2">*</span><span class="ident">err</span>)
}
}
}</pre></div>
<p>Note you don't need to wrap value in <code>Some</code>, its implicit. In case you want
<code>None</code> returned just omit the <code>cause</code>. You can't return <code>None</code>
conditionally.</p>
<p>To change how each clause is <code>Display</code>ed add <code>display(pattern,..args)</code>,
for example:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered">
<span class="macro">quick_error</span><span class="macro">!</span> {
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">SomeError</span> {
<span class="ident">Io</span>(<span class="ident">err</span>: <span class="ident">std</span>::<span class="ident">io</span>::<span class="ident">Error</span>) {
<span class="ident">display</span>(<span class="string">&quot;I/O error: {}&quot;</span>, <span class="ident">err</span>)
}
<span class="ident">Utf8</span>(<span class="ident">err</span>: <span class="ident">std</span>::<span class="ident">str</span>::<span class="ident">Utf8Error</span>) {
<span class="ident">display</span>(<span class="string">&quot;Utf8 error, valid up to {}&quot;</span>, <span class="ident">err</span>.<span class="ident">valid_up_to</span>())
}
}
}</pre></div>
<p>If you need a reference to the error when <code>Display</code>ing, you can instead use
<code>display(x) -&gt; (pattern, ..args)</code>, where <code>x</code> sets the name of the reference.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered">
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">error</span>::<span class="ident">Error</span>; <span class="comment">// put methods like `source()` of this trait into scope</span>
<span class="macro">quick_error</span><span class="macro">!</span> {
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">SomeError</span> {
<span class="ident">Io</span>(<span class="ident">err</span>: <span class="ident">std</span>::<span class="ident">io</span>::<span class="ident">Error</span>) {
<span class="ident">display</span>(<span class="ident">x</span>) <span class="op">-</span><span class="op">&gt;</span> (<span class="string">&quot;I/O: {}&quot;</span>, <span class="ident">err</span>)
}
<span class="ident">Utf8</span>(<span class="ident">err</span>: <span class="ident">std</span>::<span class="ident">str</span>::<span class="ident">Utf8Error</span>) {
<span class="ident">display</span>(<span class="ident">self_</span>) <span class="op">-</span><span class="op">&gt;</span> (<span class="string">&quot;UTF-8 error. Valid up to {}&quot;</span>, <span class="ident">err</span>.<span class="ident">valid_up_to</span>())
}
}
}</pre></div>
<p>To convert to the type from any other, use one of the three forms of
<code>from</code> clause.</p>
<p>For example, to convert simple wrapper use bare <code>from()</code>:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered">
<span class="macro">quick_error</span><span class="macro">!</span> {
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">SomeError</span> {
<span class="ident">Io</span>(<span class="ident">err</span>: <span class="ident">std</span>::<span class="ident">io</span>::<span class="ident">Error</span>) {
<span class="ident">from</span>()
}
}
}</pre></div>
<p>This implements <code>From&lt;io::Error&gt;</code>.</p>
<p>To convert to singleton enumeration type (discarding the value), use
the <code>from(type)</code> form:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered">
<span class="macro">quick_error</span><span class="macro">!</span> {
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">SomeError</span> {
<span class="ident">FormatError</span> {
<span class="ident">from</span>(<span class="ident">std</span>::<span class="ident">fmt</span>::<span class="ident">Error</span>)
}
}
}</pre></div>
<p>And the most powerful form is <code>from(var: type) -&gt; (arguments...)</code>. It
might be used to convert to type with multiple arguments or for arbitrary
value conversions:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered">
<span class="macro">quick_error</span><span class="macro">!</span> {
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">SomeError</span> {
<span class="ident">FailedOperation</span>(<span class="ident">s</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;static</span> <span class="ident">str</span>, <span class="ident">errno</span>: <span class="ident">i32</span>) {
<span class="ident">from</span>(<span class="ident">errno</span>: <span class="ident">i32</span>) <span class="op">-</span><span class="op">&gt;</span> (<span class="string">&quot;os error&quot;</span>, <span class="ident">errno</span>)
<span class="ident">from</span>(<span class="ident">e</span>: <span class="ident">std</span>::<span class="ident">io</span>::<span class="ident">Error</span>) <span class="op">-</span><span class="op">&gt;</span> (<span class="string">&quot;io error&quot;</span>, <span class="ident">e</span>.<span class="ident">raw_os_error</span>().<span class="ident">unwrap</span>())
}
<span class="doccomment">/// Converts from both kinds of utf8 errors</span>
<span class="ident">Utf8</span>(<span class="ident">err</span>: <span class="ident">std</span>::<span class="ident">str</span>::<span class="ident">Utf8Error</span>) {
<span class="ident">from</span>()
<span class="ident">from</span>(<span class="ident">err</span>: <span class="ident">std</span>::<span class="ident">string</span>::<span class="ident">FromUtf8Error</span>) <span class="op">-</span><span class="op">&gt;</span> (<span class="ident">err</span>.<span class="ident">utf8_error</span>())
}
}
}</pre></div>
<h1 id="context" class="section-header"><a href="#context">Context</a></h1>
<p>Since quick-error 1.1 we also have a <code>context</code> declaration, which is
similar to (the longest form of) <code>from</code>, but allows adding some context to
the error. We need a longer example to demonstrate this:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered">
<span class="kw">use</span> <span class="ident">quick_error</span>::<span class="ident">ResultExt</span>;
<span class="macro">quick_error</span><span class="macro">!</span> {
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">Error</span> {
<span class="ident">File</span>(<span class="ident">filename</span>: <span class="ident">PathBuf</span>, <span class="ident">err</span>: <span class="ident">io</span>::<span class="ident">Error</span>) {
<span class="ident">context</span>(<span class="ident">path</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">Path</span>, <span class="ident">err</span>: <span class="ident">io</span>::<span class="ident">Error</span>)
<span class="op">-</span><span class="op">&gt;</span> (<span class="ident">path</span>.<span class="ident">to_path_buf</span>(), <span class="ident">err</span>)
}
}
}
<span class="kw">fn</span> <span class="ident">openfile</span>(<span class="ident">path</span>: <span class="kw-2">&amp;</span><span class="ident">Path</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Result</span><span class="op">&lt;</span>(), <span class="ident">Error</span><span class="op">&gt;</span> {
<span class="macro">try</span><span class="macro">!</span>(<span class="ident">File</span>::<span class="ident">open</span>(<span class="ident">path</span>).<span class="ident">context</span>(<span class="ident">path</span>));
<span class="comment">// If we didn&#39;t have context, the line above would be written as;</span>
<span class="comment">//</span>
<span class="comment">// try!(File::open(path)</span>
<span class="comment">// .map_err(|err| Error::File(path.to_path_buf(), err)));</span>
<span class="prelude-val">Ok</span>(())
}
</pre></div>
<p>Each <code>context(a: A, b: B)</code> clause implements
<code>From&lt;Context&lt;A, B&gt;&gt; for Error</code>. Which means multiple <code>context</code> clauses
are a subject to the normal coherence rules. Unfortunately, we can't
provide full support of generics for the context, but you may either use a
lifetime <code>'a</code> for references or <code>AsRef&lt;Type&gt;</code> (the latter means <code>A: AsRef&lt;Type&gt;</code>, and <code>Type</code> must be concrete). It's also occasionally useful
to use a tuple as a type of the first argument.</p>
<p>You also need to <code>use quick_error::ResultExt</code> extension trait to get
working <code>.context()</code> method.</p>
<p>More info on context in <a href="http://bit.ly/1PsuxDt">this article</a>.</p>
<p>All forms of <code>from</code>, <code>display</code>, <code>cause</code>, and <code>context</code>
clauses can be combined and put in arbitrary order. Only <code>from</code> and
<code>context</code> can be used multiple times in single variant of enumeration.
Docstrings are also okay. Empty braces can be omitted as of quick_error
0.1.3.</p>
<h1 id="private-enums" class="section-header"><a href="#private-enums">Private Enums</a></h1>
<p>Since quick-error 1.2.0 we have a way to make a private enum that is
wrapped by public structure:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered">
<span class="attribute">#[<span class="ident">macro_use</span>]</span> <span class="kw">extern</span> <span class="kw">crate</span> <span class="ident">quick_error</span>;
<span class="macro">quick_error</span><span class="macro">!</span> {
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">PubError</span> <span class="ident">wraps</span> <span class="ident">ErrorEnum</span> {
<span class="ident">Variant1</span> {}
}
}</pre></div>
<p>This generates data structures like this</p>
<div class="example-wrap"><pre class="rust rust-example-rendered">
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">PubError</span>(<span class="ident">ErrorEnum</span>);
<span class="kw">enum</span> <span class="ident">ErrorEnum</span> {
<span class="ident">Variant1</span>,
}
</pre></div>
<p>Which in turn allows you to export just <code>PubError</code> in your crate and keep
actual enumeration private to the crate. This is useful to keep backwards
compatibility for error types. Currently there is no shorcuts to define
error constructors for the inner type, but we consider adding some in
future versions.</p>
<p>It's possible to declare internal enum as public too.</p>
</div><h2 id='macros' class='section-header'><a href="#macros">Macros</a></h2>
<table><tr class='module-item'><td><a class="macro" href="macro.quick_error.html" title='quick_error::quick_error macro'>quick_error</a></td><td class='docblock-short'><p>Main macro that does all the work</p>
</td></tr></table><h2 id='structs' class='section-header'><a href="#structs">Structs</a></h2>
<table><tr class='module-item'><td><a class="struct" href="struct.Context.html" title='quick_error::Context struct'>Context</a></td><td class='docblock-short'><p>Generic context type</p>
</td></tr></table><h2 id='traits' class='section-header'><a href="#traits">Traits</a></h2>
<table><tr class='module-item'><td><a class="trait" href="trait.ResultExt.html" title='quick_error::ResultExt trait'>ResultExt</a></td><td class='docblock-short'><p>Result extension trait adding a <code>context</code> method</p>
</td></tr></table></section><section id="search" class="content hidden"></section><section class="footer"></section><script>window.rootPath = "../";window.currentCrate = "quick_error";</script><script src="../aliases.js"></script><script src="../main.js"></script><script defer src="../search-index.js"></script></body></html>

View File

@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=macro.quick_error.html">
</head>
<body>
<p>Redirecting to <a href="macro.quick_error.html">macro.quick_error.html</a>...</p>
<script>location.replace("macro.quick_error.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,263 @@
<!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="API documentation for the Rust `quick_error` macro in crate `quick_error`."><meta name="keywords" content="rust, rustlang, rust-lang, quick_error"><title>quick_error::quick_error - 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="../dark.css"><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script src="../storage.js"></script><noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="shortcut icon" href="../favicon.ico"><style type="text/css">#crate-search{background-image:url("../down-arrow.svg");}</style></head><body class="rustdoc macro"><!--[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">&#9776;</div><a href='../quick_error/index.html'><div class='logo-container'><img src='../rust-logo.png' alt='logo'></div></a><div class="sidebar-elems"><p class='location'><a href='index.html'>quick_error</a></p><script>window.sidebarCurrent = {name: 'quick_error', ty: 'macro', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></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><a id="settings-menu" href="../settings.html"><img src="../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><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/quick_error/lib.rs.html#299-966' title='goto source code'>[src]</a></span><span class='in-band'>Macro <a href='index.html'>quick_error</a>::<wbr><a class="macro" href=''>quick_error</a></span></h1><div class="docblock type-decl hidden-by-usual-hider"><div class="example-wrap"><pre class="rust macro">
<span class="macro">macro_rules</span><span class="macro">!</span> <span class="ident">quick_error</span> {
( $(<span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">meta</span>:<span class="ident">meta</span>]</span>)<span class="op">*</span>
<span class="kw">pub</span> <span class="kw">enum</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> { $(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">chunks</span>:<span class="ident">tt</span>)<span class="op">*</span> }
) <span class="op">=</span><span class="op">&gt;</span> { ... };
( $(<span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">meta</span>:<span class="ident">meta</span>]</span>)<span class="op">*</span>
<span class="kw">enum</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> { $(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">chunks</span>:<span class="ident">tt</span>)<span class="op">*</span> }
) <span class="op">=</span><span class="op">&gt;</span> { ... };
( $(<span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">meta</span>:<span class="ident">meta</span>]</span>)<span class="op">*</span>
<span class="kw">pub</span> <span class="kw">enum</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> <span class="ident">wraps</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">enum_name</span>:<span class="ident">ident</span> { $(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">chunks</span>:<span class="ident">tt</span>)<span class="op">*</span> }
) <span class="op">=</span><span class="op">&gt;</span> { ... };
( $(<span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">meta</span>:<span class="ident">meta</span>]</span>)<span class="op">*</span>
<span class="kw">pub</span> <span class="kw">enum</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> <span class="ident">wraps</span> <span class="kw">pub</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">enum_name</span>:<span class="ident">ident</span> { $(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">chunks</span>:<span class="ident">tt</span>)<span class="op">*</span> }
) <span class="op">=</span><span class="op">&gt;</span> { ... };
( $(<span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">meta</span>:<span class="ident">meta</span>]</span>)<span class="op">*</span>
<span class="kw">enum</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> <span class="ident">wraps</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">enum_name</span>:<span class="ident">ident</span> { $(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">chunks</span>:<span class="ident">tt</span>)<span class="op">*</span> }
) <span class="op">=</span><span class="op">&gt;</span> { ... };
( $(<span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">meta</span>:<span class="ident">meta</span>]</span>)<span class="op">*</span>
<span class="kw">enum</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> <span class="ident">wraps</span> <span class="kw">pub</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">enum_name</span>:<span class="ident">ident</span> { $(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">chunks</span>:<span class="ident">tt</span>)<span class="op">*</span> }
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(
<span class="ident">WRAPPER</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">internal</span>:<span class="ident">ident</span> [ $(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">strdef</span>:<span class="ident">tt</span>)<span class="op">*</span> ] <span class="macro-nonterminal">$</span><span class="macro-nonterminal">strname</span>:<span class="ident">ident</span>
$(<span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">meta</span>:<span class="ident">meta</span>]</span>)<span class="op">*</span>
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">SORT</span> [<span class="kw">enum</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> $( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">meta</span>:<span class="ident">meta</span>]</span> )<span class="kw-2">*</span>]
<span class="ident">items</span> [$($( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">imeta</span>:<span class="ident">meta</span>]</span> )<span class="op">*</span>
<span class="op">=</span><span class="op">&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">iitem</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ivar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ityp</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>]
{$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ifuncs</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>} )<span class="op">*</span> ]
<span class="ident">buf</span> [ ]
<span class="ident">queue</span> [ ]
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">SORT</span> [<span class="kw">pub</span> <span class="kw">enum</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> $( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">meta</span>:<span class="ident">meta</span>]</span> )<span class="kw-2">*</span>]
<span class="ident">items</span> [$($( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">imeta</span>:<span class="ident">meta</span>]</span> )<span class="op">*</span>
<span class="op">=</span><span class="op">&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">iitem</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ivar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ityp</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>]
{$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ifuncs</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>} )<span class="op">*</span> ]
<span class="ident">buf</span> [ ]
<span class="ident">queue</span> [ ]
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">SORT</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">def</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>]
<span class="ident">items</span> [$($( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">imeta</span>:<span class="ident">meta</span>]</span> )<span class="op">*</span>
<span class="op">=</span><span class="op">&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">iitem</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ivar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ityp</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>]
{$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ifuncs</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>} )<span class="op">*</span> ]
<span class="ident">buf</span> [$( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">bmeta</span>:<span class="ident">meta</span>]</span> )<span class="kw-2">*</span>]
<span class="ident">queue</span> [ <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">qmeta</span>:<span class="ident">meta</span>]</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>]
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">SORT</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">def</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>]
<span class="ident">items</span> [$($( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">imeta</span>:<span class="ident">meta</span>]</span> )<span class="op">*</span>
<span class="op">=</span><span class="op">&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">iitem</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ivar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ityp</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>]
{$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ifuncs</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>} )<span class="op">*</span> ]
<span class="ident">buf</span> [$( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">bmeta</span>:<span class="ident">meta</span>]</span> )<span class="kw-2">*</span>]
<span class="ident">queue</span> [ <span class="macro-nonterminal">$</span><span class="macro-nonterminal">qitem</span>:<span class="ident">ident</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>]
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">SORT</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">def</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>]
<span class="ident">items</span> [$($( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">imeta</span>:<span class="ident">meta</span>]</span> )<span class="op">*</span>
<span class="op">=</span><span class="op">&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">iitem</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ivar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ityp</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>]
{$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ifuncs</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>} )<span class="op">*</span> ]
<span class="ident">buf</span> [$( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">bmeta</span>:<span class="ident">meta</span>]</span> )<span class="op">*</span>
<span class="op">=</span><span class="op">&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">bitem</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">bmode</span>:<span class="ident">tt</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">bvar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">btyp</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>] ]
<span class="ident">queue</span> [ <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">qmeta</span>:<span class="ident">meta</span>]</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>]
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">SORT</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">def</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>]
<span class="ident">items</span> [$($( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">imeta</span>:<span class="ident">meta</span>]</span> )<span class="op">*</span>
<span class="op">=</span><span class="op">&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">iitem</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ivar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ityp</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>]
{$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ifuncs</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>} )<span class="op">*</span> ]
<span class="ident">buf</span> [$( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">bmeta</span>:<span class="ident">meta</span>]</span> )<span class="op">*</span> <span class="op">=</span><span class="op">&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">bitem</span>:<span class="ident">ident</span>: <span class="ident">UNIT</span> [ ] ]
<span class="ident">queue</span> [($( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">qvar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">qtyp</span>:<span class="ident">ty</span> ),<span class="op">+</span>) $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>]
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">SORT</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">def</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>]
<span class="ident">items</span> [$($( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">imeta</span>:<span class="ident">meta</span>]</span> )<span class="op">*</span>
<span class="op">=</span><span class="op">&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">iitem</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ivar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ityp</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>]
{$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ifuncs</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>} )<span class="op">*</span> ]
<span class="ident">buf</span> [$( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">bmeta</span>:<span class="ident">meta</span>]</span> )<span class="op">*</span> <span class="op">=</span><span class="op">&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">bitem</span>:<span class="ident">ident</span>: <span class="ident">UNIT</span> [ ] ]
<span class="ident">queue</span> [{ $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">qvar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">qtyp</span>:<span class="ident">ty</span> ),<span class="op">+</span>} $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>]
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">SORT</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">def</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>]
<span class="ident">items</span> [$($( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">imeta</span>:<span class="ident">meta</span>]</span> )<span class="op">*</span>
<span class="op">=</span><span class="op">&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">iitem</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ivar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ityp</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>]
{$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ifuncs</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>} )<span class="op">*</span> ]
<span class="ident">buf</span> [$( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">bmeta</span>:<span class="ident">meta</span>]</span> )<span class="op">*</span> <span class="op">=</span><span class="op">&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">bitem</span>:<span class="ident">ident</span>: <span class="ident">UNIT</span> [ ] ]
<span class="ident">queue</span> [{$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">qvar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">qtyp</span>:<span class="ident">ty</span> ),<span class="op">+</span> ,} $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>]
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">SORT</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">def</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>]
<span class="ident">items</span> [$($( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">imeta</span>:<span class="ident">meta</span>]</span> )<span class="op">*</span>
<span class="op">=</span><span class="op">&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">iitem</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ivar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ityp</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>]
{$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ifuncs</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>} )<span class="op">*</span> ]
<span class="ident">buf</span> [$( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">bmeta</span>:<span class="ident">meta</span>]</span> )<span class="op">*</span>
<span class="op">=</span><span class="op">&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">bitem</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">bmode</span>:<span class="ident">tt</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">bvar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">btyp</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>] ]
<span class="ident">queue</span> [ {$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">qfuncs</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>} $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>]
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">SORT</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">def</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>]
<span class="ident">items</span> [$($( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">imeta</span>:<span class="ident">meta</span>]</span> )<span class="op">*</span>
<span class="op">=</span><span class="op">&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">iitem</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ivar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ityp</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>]
{$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ifuncs</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>} )<span class="op">*</span> ]
<span class="ident">buf</span> [$( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">bmeta</span>:<span class="ident">meta</span>]</span> )<span class="op">*</span>
<span class="op">=</span><span class="op">&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">bitem</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">bmode</span>:<span class="ident">tt</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">bvar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">btyp</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>] ]
<span class="ident">queue</span> [ <span class="macro-nonterminal">$</span><span class="macro-nonterminal">qitem</span>:<span class="ident">ident</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>]
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">SORT</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">def</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>]
<span class="ident">items</span> [$($( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">imeta</span>:<span class="ident">meta</span>]</span> )<span class="op">*</span>
<span class="op">=</span><span class="op">&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">iitem</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ivar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ityp</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>]
{$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ifuncs</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>} )<span class="op">*</span> ]
<span class="ident">buf</span> [$( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">bmeta</span>:<span class="ident">meta</span>]</span> )<span class="op">*</span>
<span class="op">=</span><span class="op">&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">bitem</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">bmode</span>:<span class="ident">tt</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">bvar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">btyp</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>] ]
<span class="ident">queue</span> [ ]
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">ENUM_DEFINITION</span> [<span class="kw">pub</span> <span class="kw">enum</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> $( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">meta</span>:<span class="ident">meta</span>]</span> )<span class="kw-2">*</span>]
<span class="ident">body</span> [$($( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">imeta</span>:<span class="ident">meta</span>]</span> )<span class="op">*</span>
<span class="op">=</span><span class="op">&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">iitem</span>:<span class="ident">ident</span> ($(($( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ttyp</span>:<span class="ident">ty</span> ),<span class="op">+</span>))<span class="kw-2">*</span>) {$({$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">svar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">styp</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>})<span class="kw-2">*</span>} )<span class="op">*</span> ]
<span class="ident">queue</span> [ ]
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">ENUM_DEFINITION</span> [<span class="kw">enum</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> $( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">meta</span>:<span class="ident">meta</span>]</span> )<span class="kw-2">*</span>]
<span class="ident">body</span> [$($( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">imeta</span>:<span class="ident">meta</span>]</span> )<span class="op">*</span>
<span class="op">=</span><span class="op">&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">iitem</span>:<span class="ident">ident</span> ($(($( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ttyp</span>:<span class="ident">ty</span> ),<span class="op">+</span>))<span class="kw-2">*</span>) {$({$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">svar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">styp</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>})<span class="kw-2">*</span>} )<span class="op">*</span> ]
<span class="ident">queue</span> [ ]
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">ENUM_DEFINITION</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">def</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>]
<span class="ident">body</span> [$($( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">imeta</span>:<span class="ident">meta</span>]</span> )<span class="op">*</span>
<span class="op">=</span><span class="op">&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">iitem</span>:<span class="ident">ident</span> ($(($( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ttyp</span>:<span class="ident">ty</span> ),<span class="op">+</span>))<span class="kw-2">*</span>) {$({$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">svar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">styp</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>})<span class="kw-2">*</span>} )<span class="op">*</span> ]
<span class="ident">queue</span> [$( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">qmeta</span>:<span class="ident">meta</span>]</span> )<span class="op">*</span>
<span class="op">=</span><span class="op">&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">qitem</span>:<span class="ident">ident</span>: <span class="ident">UNIT</span> [ ] $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">queue</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>]
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">ENUM_DEFINITION</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">def</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>]
<span class="ident">body</span> [$($( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">imeta</span>:<span class="ident">meta</span>]</span> )<span class="op">*</span>
<span class="op">=</span><span class="op">&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">iitem</span>:<span class="ident">ident</span> ($(($( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ttyp</span>:<span class="ident">ty</span> ),<span class="op">+</span>))<span class="kw-2">*</span>) {$({$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">svar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">styp</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>})<span class="kw-2">*</span>} )<span class="op">*</span> ]
<span class="ident">queue</span> [$( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">qmeta</span>:<span class="ident">meta</span>]</span> )<span class="op">*</span>
<span class="op">=</span><span class="op">&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">qitem</span>:<span class="ident">ident</span>: <span class="ident">TUPLE</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">qvar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">qtyp</span>:<span class="ident">ty</span> ),<span class="op">+</span>] $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">queue</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>]
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">ENUM_DEFINITION</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">def</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>]
<span class="ident">body</span> [$($( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">imeta</span>:<span class="ident">meta</span>]</span> )<span class="op">*</span>
<span class="op">=</span><span class="op">&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">iitem</span>:<span class="ident">ident</span> ($(($( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ttyp</span>:<span class="ident">ty</span> ),<span class="op">+</span>))<span class="kw-2">*</span>) {$({$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">svar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">styp</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>})<span class="kw-2">*</span>} )<span class="op">*</span> ]
<span class="ident">queue</span> [$( <span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">qmeta</span>:<span class="ident">meta</span>]</span> )<span class="op">*</span>
<span class="op">=</span><span class="op">&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">qitem</span>:<span class="ident">ident</span>: <span class="ident">STRUCT</span> [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">qvar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">qtyp</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>] $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">queue</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>]
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">IMPLEMENTATIONS</span>
<span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> {$(
<span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span> [$(<span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">imeta</span>:<span class="ident">meta</span>]</span>)<span class="kw-2">*</span>] [$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">var</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">typ</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>] {$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">funcs</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>}
)<span class="kw-2">*</span>}
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">FIND_DISPLAY_IMPL</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span>
{ <span class="ident">display</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">self_</span>:<span class="ident">tt</span>) <span class="op">-</span><span class="op">&gt;</span> ($( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">exprs</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>) $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>}
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">FIND_DISPLAY_IMPL</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span>
{ <span class="ident">display</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">pattern</span>:<span class="ident">expr</span>) $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>}
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">FIND_DISPLAY_IMPL</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span>
{ <span class="ident">display</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">pattern</span>:<span class="ident">expr</span>, $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">exprs</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>) $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>}
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">FIND_DISPLAY_IMPL</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span>
{ <span class="macro-nonterminal">$</span><span class="macro-nonterminal">t</span>:<span class="ident">tt</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>}
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">FIND_DISPLAY_IMPL</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span>
{ }
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">FIND_DESCRIPTION_IMPL</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">me</span>:<span class="ident">ident</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">fmt</span>:<span class="ident">ident</span>
[$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">var</span>:<span class="ident">ident</span> ),<span class="kw-2">*</span>]
{ <span class="ident">description</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">expr</span>:<span class="ident">expr</span>) $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>}
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">FIND_DESCRIPTION_IMPL</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">me</span>:<span class="ident">ident</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">fmt</span>:<span class="ident">ident</span>
[$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">var</span>:<span class="ident">ident</span> ),<span class="kw-2">*</span>]
{ <span class="macro-nonterminal">$</span><span class="macro-nonterminal">t</span>:<span class="ident">tt</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>}
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">FIND_DESCRIPTION_IMPL</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">me</span>:<span class="ident">ident</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">fmt</span>:<span class="ident">ident</span>
[$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">var</span>:<span class="ident">ident</span> ),<span class="kw-2">*</span>]
{ }
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">FIND_CAUSE_IMPL</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span>
[$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">var</span>:<span class="ident">ident</span> ),<span class="kw-2">*</span>]
{ <span class="ident">cause</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">expr</span>:<span class="ident">expr</span>) $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>}
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">FIND_CAUSE_IMPL</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span>
[$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">var</span>:<span class="ident">ident</span> ),<span class="kw-2">*</span>]
{ <span class="macro-nonterminal">$</span><span class="macro-nonterminal">t</span>:<span class="ident">tt</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>}
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">FIND_CAUSE_IMPL</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span>
[$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">var</span>:<span class="ident">ident</span> ),<span class="kw-2">*</span>]
{ }
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">FIND_FROM_IMPL</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span>
[$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">var</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">typ</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>]
{ <span class="ident">from</span>() $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>}
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">FIND_FROM_IMPL</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="ident">UNIT</span>
[ ]
{ <span class="ident">from</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">ftyp</span>:<span class="ident">ty</span>) $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>}
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">FIND_FROM_IMPL</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="ident">TUPLE</span>
[$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">var</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">typ</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>]
{ <span class="ident">from</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">fvar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ftyp</span>:<span class="ident">ty</span>) <span class="op">-</span><span class="op">&gt;</span> ($( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">texpr</span>:<span class="ident">expr</span> ),<span class="kw-2">*</span>) $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>}
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">FIND_FROM_IMPL</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="ident">STRUCT</span>
[$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">var</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">typ</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>]
{ <span class="ident">from</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">fvar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ftyp</span>:<span class="ident">ty</span>) <span class="op">-</span><span class="op">&gt;</span> {$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tvar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">texpr</span>:<span class="ident">expr</span> ),<span class="kw-2">*</span>} $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>}
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">FIND_FROM_IMPL</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span>
[$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">var</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">typ</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>]
{ <span class="macro-nonterminal">$</span><span class="macro-nonterminal">t</span>:<span class="ident">tt</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>}
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">FIND_FROM_IMPL</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span>
[$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">var</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">typ</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>]
{ }
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">FIND_CONTEXT_IMPL</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="ident">TUPLE</span>
[$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">var</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">typ</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>]
{ <span class="ident">context</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">cvar</span>:<span class="ident">ident</span>: <span class="ident">AsRef</span><span class="op">&lt;</span><span class="macro-nonterminal">$</span><span class="macro-nonterminal">ctyp</span>:<span class="ident">ty</span><span class="op">&gt;</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">fvar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ftyp</span>:<span class="ident">ty</span>)
<span class="op">-</span><span class="op">&gt;</span> ($( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">texpr</span>:<span class="ident">expr</span> ),<span class="kw-2">*</span>) $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="op">*</span> }
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">FIND_CONTEXT_IMPL</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="ident">TUPLE</span>
[$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">var</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">typ</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>]
{ <span class="ident">context</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">cvar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ctyp</span>:<span class="ident">ty</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">fvar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ftyp</span>:<span class="ident">ty</span>)
<span class="op">-</span><span class="op">&gt;</span> ($( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">texpr</span>:<span class="ident">expr</span> ),<span class="kw-2">*</span>) $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="op">*</span> }
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">FIND_CONTEXT_IMPL</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="ident">STRUCT</span>
[$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">var</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">typ</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>]
{ <span class="ident">context</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">cvar</span>:<span class="ident">ident</span>: <span class="ident">AsRef</span><span class="op">&lt;</span><span class="macro-nonterminal">$</span><span class="macro-nonterminal">ctyp</span>:<span class="ident">ty</span><span class="op">&gt;</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">fvar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ftyp</span>:<span class="ident">ty</span>)
<span class="op">-</span><span class="op">&gt;</span> {$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tvar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">texpr</span>:<span class="ident">expr</span> ),<span class="kw-2">*</span>} $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="op">*</span> }
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">FIND_CONTEXT_IMPL</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="ident">STRUCT</span>
[$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">var</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">typ</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>]
{ <span class="ident">context</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">cvar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ctyp</span>:<span class="ident">ty</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">fvar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ftyp</span>:<span class="ident">ty</span>)
<span class="op">-</span><span class="op">&gt;</span> {$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tvar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">texpr</span>:<span class="ident">expr</span> ),<span class="kw-2">*</span>} $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="op">*</span> }
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">FIND_CONTEXT_IMPL</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span>
[$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">var</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">typ</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>]
{ <span class="macro-nonterminal">$</span><span class="macro-nonterminal">t</span>:<span class="ident">tt</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>}
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">FIND_CONTEXT_IMPL</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span>
[$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">var</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">typ</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>]
{ }
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">ITEM_BODY</span> $(<span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">imeta</span>:<span class="ident">meta</span>]</span>)<span class="op">*</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="ident">UNIT</span>
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">ITEM_BODY</span> $(<span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">imeta</span>:<span class="ident">meta</span>]</span>)<span class="op">*</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="ident">TUPLE</span>
[$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">typ</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>]
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">ITEM_BODY</span> $(<span class="attribute">#[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">imeta</span>:<span class="ident">meta</span>]</span>)<span class="op">*</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="ident">STRUCT</span>
[$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">var</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">typ</span>:<span class="ident">ty</span> ),<span class="kw-2">*</span>]
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">ITEM_PATTERN</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="ident">UNIT</span> []
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">ITEM_PATTERN</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="ident">TUPLE</span>
[$( <span class="kw-2">ref</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">var</span>:<span class="ident">ident</span> ),<span class="kw-2">*</span>]
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">ITEM_PATTERN</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">item</span>:<span class="ident">ident</span>: <span class="ident">STRUCT</span>
[$( <span class="kw-2">ref</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">var</span>:<span class="ident">ident</span> ),<span class="kw-2">*</span>]
) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">ERROR_CHECK</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span> <span class="ident">display</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">self_</span>:<span class="ident">tt</span>) <span class="op">-</span><span class="op">&gt;</span> ($( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">exprs</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>) $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">ERROR_CHECK</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span> <span class="ident">display</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">pattern</span>: <span class="ident">expr</span>) $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">ERROR_CHECK</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span> <span class="ident">display</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">pattern</span>: <span class="ident">expr</span>, $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">exprs</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>) $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">ERROR_CHECK</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span> <span class="ident">description</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">expr</span>:<span class="ident">expr</span>) $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">ERROR_CHECK</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span> <span class="ident">cause</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">expr</span>:<span class="ident">expr</span>) $(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span>)<span class="kw-2">*</span>) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">ERROR_CHECK</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span> <span class="ident">from</span>() $(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span>)<span class="kw-2">*</span>) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">ERROR_CHECK</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span> <span class="ident">from</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">ftyp</span>:<span class="ident">ty</span>) $(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span>)<span class="kw-2">*</span>) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">ERROR_CHECK</span> <span class="ident">TUPLE</span> <span class="ident">from</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">fvar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ftyp</span>:<span class="ident">ty</span>) <span class="op">-</span><span class="op">&gt;</span> ($( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">e</span>:<span class="ident">expr</span> ),<span class="kw-2">*</span>) $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">ERROR_CHECK</span> <span class="ident">STRUCT</span> <span class="ident">from</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">fvar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ftyp</span>:<span class="ident">ty</span>) <span class="op">-</span><span class="op">&gt;</span> {$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">v</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">e</span>:<span class="ident">expr</span> ),<span class="kw-2">*</span>} $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">ERROR_CHECK</span> <span class="ident">TUPLE</span> <span class="ident">context</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">cvar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ctyp</span>:<span class="ident">ty</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">fvar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ftyp</span>:<span class="ident">ty</span>)
<span class="op">-</span><span class="op">&gt;</span> ($( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">e</span>:<span class="ident">expr</span> ),<span class="kw-2">*</span>) $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">ERROR_CHECK</span> <span class="ident">STRUCT</span> <span class="ident">context</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">cvar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ctyp</span>:<span class="ident">ty</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">fvar</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ftyp</span>:<span class="ident">ty</span>)
<span class="op">-</span><span class="op">&gt;</span> {$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">v</span>:<span class="ident">ident</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">e</span>:<span class="ident">expr</span> ),<span class="kw-2">*</span>} $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="kw-2">*</span>) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">ERROR_CHECK</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">imode</span>:<span class="ident">tt</span> ) <span class="op">=</span><span class="op">&gt;</span> { ... };
(<span class="ident">IDENT</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ident</span>:<span class="ident">ident</span>) <span class="op">=</span><span class="op">&gt;</span> { ... };
}</pre></div>
</div><div class='docblock'><p>Main macro that does all the work</p>
</div></section><section id="search" class="content hidden"></section><section class="footer"></section><script>window.rootPath = "../";window.currentCrate = "quick_error";</script><script src="../aliases.js"></script><script src="../main.js"></script><script defer src="../search-index.js"></script></body></html>

View File

@@ -0,0 +1 @@
initSidebarItems({"macro":[["quick_error","Main macro that does all the work"]],"struct":[["Context","Generic context type"]],"trait":[["ResultExt","Result extension trait adding a `context` method"]]});

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,12 @@
<!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="API documentation for the Rust `ResultExt` trait in crate `quick_error`."><meta name="keywords" content="rust, rustlang, rust-lang, ResultExt"><title>quick_error::ResultExt - 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="../dark.css"><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script src="../storage.js"></script><noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="shortcut icon" href="../favicon.ico"><style type="text/css">#crate-search{background-image:url("../down-arrow.svg");}</style></head><body class="rustdoc trait"><!--[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">&#9776;</div><a href='../quick_error/index.html'><div class='logo-container'><img src='../rust-logo.png' alt='logo'></div></a><p class='location'>Trait ResultExt</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#required-methods">Required Methods</a><div class="sidebar-links"><a href="#tymethod.context">context</a></div><a class="sidebar-title" href="#foreign-impls">Implementations on Foreign Types</a><div class="sidebar-links"><a href="#impl-ResultExt%3CT%2C%20E%3E-for-Result%3CT%2C%20E%3E">Result&lt;T, E&gt;</a></div><a class="sidebar-title" href="#implementors">Implementors</a></div><p class='location'><a href='index.html'>quick_error</a></p><script>window.sidebarCurrent = {name: 'ResultExt', ty: 'trait', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></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><a id="settings-menu" href="../settings.html"><img src="../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><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/quick_error/lib.rs.html#976-984' title='goto source code'>[src]</a></span><span class='in-band'>Trait <a href='index.html'>quick_error</a>::<wbr><a class="trait" href=''>ResultExt</a></span></h1><div class="docblock type-decl hidden-by-usual-hider"><pre class='rust trait'>pub trait ResultExt&lt;T, E&gt; {
fn <a href='#tymethod.context' class='fnname'>context</a>&lt;X&gt;(self, x: X) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, <a class="struct" href="../quick_error/struct.Context.html" title="struct quick_error::Context">Context</a>&lt;X, E&gt;&gt;;
}</pre></div><div class='docblock'><p>Result extension trait adding a <code>context</code> method</p>
</div>
<h2 id='required-methods' class='small-section-header'>Required methods<a href='#required-methods' class='anchor'></a></h2><div class='methods'><h3 id='tymethod.context' class='method'><code id='context.v'>fn <a href='#tymethod.context' class='fnname'>context</a>&lt;X&gt;(self, x: X) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, <a class="struct" href="../quick_error/struct.Context.html" title="struct quick_error::Context">Context</a>&lt;X, E&gt;&gt;</code></h3><div class='docblock'><p>The method is use to add context information to current operation</p>
<p>The context data is then used in error constructor to store additional
information within error. For example, you may add a filename as a
context for file operation. See crate documentation for the actual
example.</p>
</div></div><span class='loading-content'>Loading content...</span>
<h2 id='foreign-impls' class='small-section-header'>Implementations on Foreign Types<a href='#foreign-impls' class='anchor'></a></h2><h3 id='impl-ResultExt%3CT%2C%20E%3E-for-Result%3CT%2C%20E%3E' class='impl'><code class='in-band'>impl&lt;T, E&gt; <a class="trait" href="../quick_error/trait.ResultExt.html" title="trait quick_error::ResultExt">ResultExt</a>&lt;T, E&gt; for <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, E&gt;</code><a href='#impl-ResultExt%3CT%2C%20E%3E-for-Result%3CT%2C%20E%3E' class='anchor'></a><a class='srclink' href='../src/quick_error/lib.rs.html#986-990' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.context' class="method hidden"><code id='context.v-1'>fn <a href='#method.context' class='fnname'>context</a>&lt;X&gt;(self, x: X) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, <a class="struct" href="../quick_error/struct.Context.html" title="struct quick_error::Context">Context</a>&lt;X, E&gt;&gt;</code><a class='srclink' href='../src/quick_error/lib.rs.html#987-989' title='goto source code'>[src]</a></h4></div><span class='loading-content'>Loading content...</span>
<h2 id='implementors' class='small-section-header'>Implementors<a href='#implementors' class='anchor'></a></h2><div class='item-list' id='implementors-list'></div><span class='loading-content'>Loading content...</span><script type="text/javascript" src="../implementors/quick_error/trait.ResultExt.js" async></script></section><section id="search" class="content hidden"></section><section class="footer"></section><script>window.rootPath = "../";window.currentCrate = "quick_error";</script><script src="../aliases.js"></script><script src="../main.js"></script><script defer src="../search-index.js"></script></body></html>