<!DOCTYPE html><htmllang="en"><head><metacharset="utf-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><metaname="generator"content="rustdoc"><metaname="description"content="githubcrates-iodocs-rs"><title>syn - Rust</title><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><linkrel="stylesheet"href="../static.files/normalize-76eba96aa4d2e634.css"><linkrel="stylesheet"href="../static.files/rustdoc-ac92e1bbe349e143.css"><metaname="rustdoc-vars"data-root-path="../"data-static-root-path="../static.files/"data-current-crate="syn"data-themes=""data-resource-suffix=""data-rustdoc-version="1.76.0 (07dca489a 2024-02-04)"data-channel="1.76.0"data-search-js="search-2b6ce74ff89ae146.js"data-settings-js="settings-4313503d2e1961c2.js"><scriptsrc="../static.files/storage-f2adc0d6ca4d09fb.js"></script><scriptdefersrc="../crates.js"></script><scriptdefersrc="../static.files/main-305769736d49e732.js"></script><noscript><linkrel="stylesheet"href="../static.files/noscript-feafe1bb7466e4bd.css"></noscript><linkrel="alternate icon"type="image/png"href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><linkrel="alternate icon"type="image/png"href="../static.files/favicon-32x32-422f7d1d52889060.png"><linkrel="icon"type="image/svg+xml"href="../static.files/favicon-2c020d218678b618.svg"></head><bodyclass="rustdoc mod crate"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><navclass="mobile-topbar"><buttonclass="sidebar-menu-toggle">☰</button></nav><navclass="sidebar"><divclass="sidebar-crate"><h2><ahref="../syn/index.html">syn</a><spanclass="version">2.0.52</span></h2></div><divclass="sidebar-elems"><ulclass="block">
<main><divclass="width-limiter"><navclass="sub"><formclass="search-form"><span></span><divid="sidebar-button"tabindex="-1"><ahref="../syn/all.html"title="show sidebar"></a></div><inputclass="search-input"name="search"aria-label="Run search in the documentation"autocomplete="off"spellcheck="false"placeholder="Click or press ‘S’ to search, ‘?’ for more options…"type="search"><divid="help-button"tabindex="-1"><ahref="../help.html"title="help">?</a></div><divid="settings-menu"tabindex="-1"><ahref="../settings.html"title="settings"><imgwidth="22"height="22"alt="Change settings"src="../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><sectionid="main-content"class="content"><divclass="main-heading"><h1>Crate <aclass="mod"href="#">syn</a><buttonid="copy-path"title="Copy item path to clipboard"><imgsrc="../static.files/clipboard-7571035ce49a181d.svg"width="19"height="18"alt="Copy item path"></button></h1><spanclass="out-of-band"><aclass="src"href="../src/syn/lib.rs.html#1-1005">source</a> · <buttonid="toggle-all-docs"title="collapse all docs">[<span>−</span>]</button></span></div><detailsclass="toggle top-doc"open><summaryclass="hideme"><span>Expand description</span></summary><divclass="docblock"><p><ahref="https://github.com/dtolnay/syn"><imgsrc="https://img.shields.io/badge/github-8da0cb?style=for-the-badge&labelColor=555555&logo=github"alt="github"/></a><ahref="https://crates.io/crates/syn"><imgsrc="https://img.shields.io/badge/crates.io-fc8d62?style=for-the-badge&labelColor=555555&logo=rust"alt="crates-io"/></a><ahref="index.html"title="mod syn"><imgsrc="https://img.shields.io/badge/docs.rs-66c2a5?style=for-the-badge&labelColor=555555&logo=docs.rs"alt="docs-rs"/></a></p>
<spanclass="comment">// Hand the output tokens back to the compiler
</span>TokenStream::from(expanded)
}</code></pre></div>
<p>The <ahref="https://github.com/dtolnay/syn/tree/master/examples/heapsize"><code>heapsize</code></a> example directory shows a complete working implementation
of a derive macro. The example derives a <code>HeapSize</code> trait which computes an
estimate of the amount of heap memory owned by a value.</p>
<p>By tracking span information all the way through the expansion of a
procedural macro as shown in the <code>heapsize</code> example, token-based macros in
Syn are able to trigger errors that directly pinpoint the source of the
problem.</p>
<divclass="example-wrap"><preclass="language-text"><code>error[E0277]: the trait bound `std::thread::Thread: HeapSize` is not satisfied
--> src/main.rs:7:5
|
7 | bad: std::thread::Thread,
| ^^^^^^^^^^^^^^^^^^^^^^^^ the trait `HeapSize` is not implemented for `Thread`
</code></pre></div><br>
<h2id="parsing-a-custom-syntax"><ahref="#parsing-a-custom-syntax">Parsing a custom syntax</a></h2>
<p>The <ahref="https://github.com/dtolnay/syn/tree/master/examples/lazy-static"><code>lazy-static</code></a> example directory shows the implementation of a
<code>functionlike!(...)</code> procedural macro in which the input tokens are parsed
using Syn’s parsing API.</p>
<p>The example reimplements the popular <code>lazy_static</code> crate from crates.io as a
<p>When developing a procedural macro it can be helpful to look at what the
generated code looks like. Use <code>cargo rustc -- -Zunstable-options --pretty=expanded</code> or the <ahref="https://github.com/dtolnay/cargo-expand"><code>cargo expand</code></a> subcommand.</p>
<p>To show the expanded code for some crate that uses your procedural macro,
run <code>cargo expand</code> from that crate. To show the expanded code for one of
your own test cases, run <code>cargo expand --test the_test_case</code> where the last
argument is the name of the test file without the <code>.rs</code> extension.</p>
<p>This write-up by Brandon W Maister discusses debugging in more detail:
<ahref="https://quodlibetor.github.io/posts/debugging-rusts-new-custom-derive-system/">Debugging Rust’s new Custom Derive system</a>.</p>
<p>Syn puts a lot of functionality behind optional features in order to
optimize compile time for the most common use cases. The following features
are available.</p>
<ul>
<li><strong><code>derive</code></strong><em>(enabled by default)</em> — Data structures for representing the
possible input to a derive macro, including structs and enums and types.</li>
<li><strong><code>full</code></strong> — Data structures for representing the syntax tree of all valid
Rust source code, including items and expressions.</li>
<li><strong><code>parsing</code></strong><em>(enabled by default)</em> — Ability to parse input tokens into
a syntax tree node of a chosen type.</li>
<li><strong><code>printing</code></strong><em>(enabled by default)</em> — Ability to print a syntax tree
node as tokens of Rust source code.</li>
<li><strong><code>visit</code></strong> — Trait for traversing a syntax tree.</li>
<li><strong><code>visit-mut</code></strong> — Trait for traversing and mutating in place a syntax
tree.</li>
<li><strong><code>fold</code></strong> — Trait for transforming an owned syntax tree.</li>
<li><strong><code>clone-impls</code></strong><em>(enabled by default)</em> — Clone impls for all syntax tree
types.</li>
<li><strong><code>extra-traits</code></strong> — Debug, Eq, PartialEq, Hash impls for all syntax tree
types.</li>
<li><strong><code>proc-macro</code></strong><em>(enabled by default)</em> — Runtime dependency on the
dynamic library libproc_macro from rustc toolchain.</li>
</ul>
</div></details><h2id="modules"class="section-header"><ahref="#modules">Modules</a></h2><ulclass="item-table"><li><divclass="item-name"><aclass="mod"href="buffer/index.html"title="mod syn::buffer">buffer</a></div><divclass="desc docblock-short">A stably addressed token buffer supporting efficient traversal based on a
cheaply copyable cursor.</div></li><li><divclass="item-name"><aclass="mod"href="ext/index.html"title="mod syn::ext">ext</a></div><divclass="desc docblock-short">Extension traits to provide parsing methods on foreign types.</div></li><li><divclass="item-name"><aclass="mod"href="fold/index.html"title="mod syn::fold">fold</a></div><divclass="desc docblock-short">Syntax tree traversal to transform the nodes of an owned syntax tree.</div></li><li><divclass="item-name"><aclass="mod"href="meta/index.html"title="mod syn::meta">meta</a></div><divclass="desc docblock-short">Facility for interpreting structured content inside of an <code>Attribute</code>.</div></li><li><divclass="item-name"><aclass="mod"href="parse/index.html"title="mod syn::parse">parse</a></div><divclass="desc docblock-short">Parsing interface for parsing a token stream into a syntax tree node.</div></li><li><divclass="item-name"><aclass="mod"href="punctuated/index.html"title="mod syn::punctuated">punctuated</a></div><divclass="desc docblock-short">A punctuated sequence of syntax tree nodes separated by punctuation.</div></li><li><divclass="item-name"><aclass="mod"href="spanned/index.html"title="mod syn::spanned">spanned</a></div><divclass="desc docblock-short">A trait that can provide the <code>Span</code> of the complete contents of a syntax
tree node.</div></li><li><divclass="item-name"><aclass="mod"href="token/index.html"title="mod syn::token">token</a></div><divclass="desc docblock-short">Tokens representing Rust punctuation, keywords, and delimiters.</div></li><li><divclass="item-name"><aclass="mod"href="visit_mut/index.html"title="mod syn::visit_mut">visit_mut</a></div><divclass="desc docblock-short">Syntax tree traversal to mutate an exclusive borrow of a syntax tree in
place.</div></li></ul><h2id="macros"class="section-header"><ahref="#macros">Macros</a></h2><ulclass="item-table"><li><divclass="item-name"><aclass="macro"href="macro.Token.html"title="macro syn::Token">Token</a></div><divclass="desc docblock-short">A type-macro that expands to the name of the Rust type representation of a
given token.</div></li><li><divclass="item-name"><aclass="macro"href="macro.braced.html"title="macro syn::braced">braced</a></div><divclass="desc docblock-short">Parse a set of curly braces and expose their content to subsequent parsers.</div></li><li><divclass="item-name"><aclass="macro"href="macro.bracketed.html"title="macro syn::bracketed">bracketed</a></div><divclass="desc docblock-short">Parse a set of square brackets and expose their content to subsequent
parsers.</div></li><li><divclass="item-name"><aclass="macro"href="macro.custom_keyword.html"title="macro syn::custom_keyword">custom_keyword</a></div><divclass="desc docblock-short">Define a type that supports parsing and printing a given identifier as if it
were a keyword.</div></li><li><divclass="item-name"><aclass="macro"href="macro.custom_punctuation.html"title="macro syn::custom_punctuation">custom_punctuation</a></div><divclass="desc docblock-short">Define a type that supports parsing and printing a multi-character symbol
as if it were a punctuation token.</div></li><li><divclass="item-name"><aclass="macro"href="macro.parenthesized.html"title="macro syn::parenthesized">parenthesized</a></div><divclass="desc docblock-short">Parse a set of parentheses and expose their content to subsequent parsers.</div></li><li><divclass="item-name"><aclass="macro"href="macro.parse_macro_input.html"title="macro syn::parse_macro_input">parse_macro_input</a></div><divclass="desc docblock-short">Parse the input TokenStream of a macro, triggering a compile error if the
tokens fail to parse.</div></li><li><divclass="item-name"><aclass="macro"href="macro.parse_quote.html"title="macro syn::parse_quote">parse_quote</a></div><divclass="desc docblock-short">Quasi-quotation macro that accepts input like the <ahref="https://docs.rs/quote/1.0/quote/index.html"><code>quote!</code></a> macro but uses
type inference to figure out a return type for those tokens.</div></li><li><divclass="item-name"><aclass="macro"href="macro.parse_quote_spanned.html"title="macro syn::parse_quote_spanned">parse_quote_spanned</a></div><divclass="desc docblock-short">This macro is <ahref="macro.parse_quote.html"title="macro syn::parse_quote"><code>parse_quote!</code></a> + <ahref="../quote/macro.quote_spanned.html"title="macro quote::quote_spanned"><code>quote_spanned!</code></a>.</div></li></ul><h2id="structs"class="section-header"><ahref="#structs">Structs</a></h2><ulclass="item-table"><li><divclass="item-name"><aclass="struct"href="struct.Abi.html"title="struct syn::Abi">Abi</a></div><divclass="desc docblock-short">The binary interface of a function: <code>extern "C"</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.AngleBracketedGenericArguments.html"title="struct syn::AngleBracketedGenericArguments">AngleBracketedGenericArguments</a></div><divclass="desc docblock-short">Angle bracketed arguments of a path segment: the <code><K, V></code> in <code>HashMap<K, V></code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.Arm.html"title="struct syn::Arm">Arm</a></div><divclass="desc docblock-short">One arm of a <code>match</code> expression: <code>0..=10 => { return true; }</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.AssocConst.html"title="struct syn::AssocConst">AssocConst</a></div><divclass="desc docblock-short">An equality constraint on an associated constant: the <code>PANIC = false</code> in
<code>Trait<PANIC = false></code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.AssocType.html"title="struct syn::AssocType">AssocType</a></div><divclass="desc docblock-short">A binding (equality constraint) on an associated type: the <code>Item = u8</code>
in <code>Iterator<Item = u8></code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.Attribute.html"title="struct syn::Attribute">Attribute</a></div><divclass="desc docblock-short">An attribute, like <code>#[repr(transparent)]</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.BareFnArg.html"title="struct syn::BareFnArg">BareFnArg</a></div><divclass="desc docblock-short">An argument in a function type: the <code>usize</code> in <code>fn(usize) -> bool</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.BareVariadic.html"title="struct syn::BareVariadic">BareVariadic</a></div><divclass="desc docblock-short">The variadic argument of a function pointer like <code>fn(usize, ...)</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.Block.html"title="struct syn::Block">Block</a></div><divclass="desc docblock-short">A braced block containing Rust statements.</div></li><li><divclass="item-name"><aclass="struct"href="struct.BoundLifetimes.html"title="struct syn::BoundLifetimes">BoundLifetimes</a></div><divclass="desc docblock-short">A set of bound lifetimes: <code>for<'a, 'b, 'c></code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ConstParam.html"title="struct syn::ConstParam">ConstParam</a></div><divclass="desc docblock-short">A const generic parameter: <code>const LENGTH: usize</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.Constraint.html"title="struct syn::Constraint">Constraint</a></div><divclass="desc docblock-short">An associated type bound: <code>Iterator<Item: Display></code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.DataEnum.html"title="struct syn::DataEnum">DataEnum</a></div><divclass="desc docblock-short">An enum input to a <code>proc_macro_derive</code> macro.</div></li><li><divclass="item-name"><aclass="struct"href="struct.DataStruct.html"title="struct syn::DataStruct">DataStruct</a></div><divclass="desc docblock-short">A struct input to a <code>proc_macro_derive</code> macro.</div></li><li><divclass="item-name"><aclass="struct"href="struct.DataUnion.html"title="struct syn::DataUnion">DataUnion</a></div><divclass="desc docblock-short">An untagged union input to a <code>proc_macro_derive</code> macro.</div></li><li><divclass="item-name"><aclass="struct"href="struct.DeriveInput.html"title="struct syn::DeriveInput">DeriveInput</a></div><divclass="desc docblock-short">Data structure sent to a <code>proc_macro_derive</code> macro.</div></li><li><divclass="item-name"><aclass="struct"href="struct.Error.html"title="struct syn::Error">Error</a></div><divclass="desc docblock-short">Error returned when a Syn parser cannot parse the input tokens.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprArray.html"title="struct syn::ExprArray">ExprArray</a></div><divclass="desc docblock-short">A slice literal expression: <code>[a, b, c, d]</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprAssign.html"title="struct syn::ExprAssign">ExprAssign</a></div><divclass="desc docblock-short">An assignment expression: <code>a = compute()</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprAsync.html"title="struct syn::ExprAsync">ExprAsync</a></div><divclass="desc docblock-short">An async block: <code>async { ... }</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprAwait.html"title="struct syn::ExprAwait">ExprAwait</a></div><divclass="desc docblock-short">An await expression: <code>fut.await</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprBinary.html"title="struct syn::ExprBinary">ExprBinary</a></div><divclass="desc docblock-short">A binary operation: <code>a + b</code>, <code>a += b</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprBlock.html"title="struct syn::ExprBlock">ExprBlock</a></div><divclass="desc docblock-short">A blocked scope:
expression.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprCall.html"title="struct syn::ExprCall">ExprCall</a></div><divclass="desc docblock-short">A function call expression: <code>invoke(a, b)</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprCast.html"title="struct syn::ExprCast">ExprCast</a></div><divclass="desc docblock-short">A cast expression: <code>foo as f64</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprClosure.html"title="struct syn::ExprClosure">ExprClosure</a></div><divclass="desc docblock-short">A closure expression: <code>|a, b| a + b</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprConst.html"title="struct syn::ExprConst">ExprConst</a></div><divclass="desc docblock-short">A const block: <code>const { ... }</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprContinue.html"title="struct syn::ExprContinue">ExprContinue</a></div><divclass="desc docblock-short">A <code>continue</code>, with an optional label.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprField.html"title="struct syn::ExprField">ExprField</a></div><divclass="desc docblock-short">Access of a named struct field (<code>obj.k</code>) or unnamed tuple struct
field (<code>obj.0</code>).</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprForLoop.html"title="struct syn::ExprForLoop">ExprForLoop</a></div><divclass="desc docblock-short">A for loop: <code>for pat in expr { ... }</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprGroup.html"title="struct syn::ExprGroup">ExprGroup</a></div><divclass="desc docblock-short">An expression contained within invisible delimiters.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprIf.html"title="struct syn::ExprIf">ExprIf</a></div><divclass="desc docblock-short">An <code>if</code> expression with an optional <code>else</code> block: <code>if expr { ... } else { ... }</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprIndex.html"title="struct syn::ExprIndex">ExprIndex</a></div><divclass="desc docblock-short">A square bracketed indexing expression: <code>vector[2]</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprInfer.html"title="struct syn::ExprInfer">ExprInfer</a></div><divclass="desc docblock-short">The inferred value of a const generic argument, denoted <code>_</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprLet.html"title="struct syn::ExprLet">ExprLet</a></div><divclass="desc docblock-short">A <code>let</code> guard: <code>let Some(x) = opt</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprLit.html"title="struct syn::ExprLit">ExprLit</a></div><divclass="desc docblock-short">A literal in place of an expression: <code>1</code>, <code>"foo"</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprLoop.html"title="struct syn::ExprLoop">ExprLoop</a></div><divclass="desc docblock-short">Conditionless loop: <code>loop { ... }</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprMacro.html"title="struct syn::ExprMacro">ExprMacro</a></div><divclass="desc docblock-short">A macro invocation expression: <code>format!("{}", q)</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprMatch.html"title="struct syn::ExprMatch">ExprMatch</a></div><divclass="desc docblock-short">A <code>match</code> expression: <code>match n { Some(n) => {}, None => {} }</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprMethodCall.html"title="struct syn::ExprMethodCall">ExprMethodCall</a></div><divclass="desc docblock-short">A method call expression: <code>x.foo::<T>(a, b)</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprParen.html"title="struct syn::ExprParen">ExprParen</a></div><divclass="desc docblock-short">A parenthesized expression: <code>(a + b)</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprPath.html"title="struct syn::ExprPath">ExprPath</a></div><divclass="desc docblock-short">A path like <code>std::mem::replace</code> possibly containing generic
parameters and a qualified self-type.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprRange.html"title="struct syn::ExprRange">ExprRange</a></div><divclass="desc docblock-short">A range expression: <code>1..2</code>, <code>1..</code>, <code>..2</code>, <code>1..=2</code>, <code>..=2</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprReference.html"title="struct syn::ExprReference">ExprReference</a></div><divclass="desc docblock-short">A referencing operation: <code>&a</code> or <code>&mut a</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprRepeat.html"title="struct syn::ExprRepeat">ExprRepeat</a></div><divclass="desc docblock-short">An array literal constructed from one repeated element: <code>[0u8; N]</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprReturn.html"title="struct syn::ExprReturn">ExprReturn</a></div><divclass="desc docblock-short">A <code>return</code>, with an optional value to be returned.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprStruct.html"title="struct syn::ExprStruct">ExprStruct</a></div><divclass="desc docblock-short">A struct literal expression: <code>Point { x: 1, y: 1 }</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprTry.html"title="struct syn::ExprTry">ExprTry</a></div><divclass="desc docblock-short">A try-expression: <code>expr?</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprTryBlock.html"title="struct syn::ExprTryBlock">ExprTryBlock</a></div><divclass="desc docblock-short">A try block: <code>try { ... }</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprTuple.html"title="struct syn::ExprTuple">ExprTuple</a></div><divclass="desc docblock-short">A tuple expression: <code>(a, b, c, d)</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprUnary.html"title="struct syn::ExprUnary">ExprUnary</a></div><divclass="desc docblock-short">A unary operation: <code>!x</code>, <code>*x</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprUnsafe.html"title="struct syn::ExprUnsafe">ExprUnsafe</a></div><divclass="desc docblock-short">An unsafe block: <code>unsafe { ... }</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprWhile.html"title="struct syn::ExprWhile">ExprWhile</a></div><divclass="desc docblock-short">A while loop: <code>while expr { ... }</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ExprYield.html"title="struct syn::ExprYield">ExprYield</a></div><divclass="desc docblock-short">A yield expression: <code>yield expr</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.Field.html"title="struct syn::Field">Field</a></div><divclass="desc docblock-short">A field of a struct or enum variant.</div></li><li><divclass="item-name"><aclass="struct"href="struct.FieldPat.html"title="struct syn::FieldPat">FieldPat</a></div><divclass="desc docblock-short">A single field in a struct pattern.</div></li><li><divclass="item-name"><aclass="struct"href="struct.FieldValue.html"title="struct syn::FieldValue">FieldValue</a></div><divclass="desc docblock-short">A field-value pair in a struct literal.</div></li><li><divclass="item-name"><aclass="struct"href="struct.FieldsNamed.html"title="struct syn::FieldsNamed">FieldsNamed</a></div><divclass="desc docblock-short">Named fields of a struct or struct variant such as <code>Point { x: f64, y: f64 }</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.FieldsUnnamed.html"title="struct syn::FieldsUnnamed">FieldsUnnamed</a></div><divclass="desc docblock-short">Unnamed fields of a tuple struct or tuple variant such as <code>Some(T)</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.File.html"title="struct syn::File">File</a></div><divclass="desc docblock-short">A complete file of Rust source code.</div></li><li><divclass
enum, trait, etc.</div></li><li><divclass="item-name"><aclass="struct"href="struct.Ident.html"title="struct syn::Ident">Ident</a></div><divclass="desc docblock-short">A word of Rust code, which may be a keyword or legal variable name.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ImplGenerics.html"title="struct syn::ImplGenerics">ImplGenerics</a></div><divclass="desc docblock-short">Returned by <code>Generics::split_for_impl</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ImplItemConst.html"title="struct syn::ImplItemConst">ImplItemConst</a></div><divclass="desc docblock-short">An associated constant within an impl block.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ImplItemFn.html"title="struct syn::ImplItemFn">ImplItemFn</a></div><divclass="desc docblock-short">An associated function within an impl block.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ImplItemMacro.html"title="struct syn::ImplItemMacro">ImplItemMacro</a></div><divclass="desc docblock-short">A macro invocation within an impl block.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ImplItemType.html"title="struct syn::ImplItemType">ImplItemType</a></div><divclass="desc docblock-short">An associated type within an impl block.</div></li><li><divclass="item-name"><aclass="struct"href="struct.Index.html"title="struct syn::Index">Index</a></div><divclass="desc docblock-short">The index of an unnamed tuple struct field.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ItemConst.html"title="struct syn::ItemConst">ItemConst</a></div><divclass="desc docblock-short">A constant item: <code>const MAX: u16 = 65535</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ItemEnum.html"title="struct syn::ItemEnum">ItemEnum</a></div><divclass="desc docblock-short">An enum definition: <code>enum Foo<A, B> { A(A), B(B) }</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ItemExternCrate.html"title="struct syn::ItemExternCrate">ItemExternCrate</a></div><divclass="desc docblock-short">An <code>extern crate</code> item: <code>extern crate serde</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ItemFn.html"title="struct syn::ItemFn">ItemFn</a></div><divclass="desc docblock-short">A free-standing function: <code>fn process(n: usize) -> Result<()> { ... }</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ItemForeignMod.html"title="struct syn::ItemForeignMod">ItemForeignMod</a></div><divclass="desc docblock-short">A block of foreign items: <code>extern "C" { ... }</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ItemImpl.html"title="struct syn::ItemImpl">ItemImpl</a></div><divclass="desc docblock-short">An impl block providing trait or associated items: <code>impl<A> Trait for Data<A> { ... }</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ItemMacro.html"title="struct syn::ItemMacro">ItemMacro</a></div><divclass="desc docblock-short">A macro invocation, which includes <code>macro_rules!</code> definitions.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ItemMod.html"title="struct syn::ItemMod">ItemMod</a></div><divclass="desc docblock-short">A module or module declaration: <code>mod m</code> or <code>mod m { ... }</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ItemStatic.html"title="struct syn::ItemStatic">ItemStatic</a></div><divclass="desc docblock-short">A static item: <code>static BIKE: Shed = Shed(42)</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ItemStruct.html"title="struct syn::ItemStruct">ItemStruct</a></div><divclass="desc docblock-short">A struct definition: <code>struct Foo<A> { x: A }</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ItemTrait.html"title="struct syn::ItemTrait">ItemTrait</a></div><divc
diverging <code>else</code> block.</div></li><li><divclass="item-name"><aclass="struct"href="struct.Macro.html"title="struct syn::Macro">Macro</a></div><divclass="desc docblock-short">A macro invocation: <code>println!("{}", mac)</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.MetaList.html"title="struct syn::MetaList">MetaList</a></div><divclass="desc docblock-short">A structured list within an attribute, like <code>derive(Copy, Clone)</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.MetaNameValue.html"title="struct syn::MetaNameValue">MetaNameValue</a></div><divclass="desc docblock-short">A name-value pair within an attribute, like <code>feature = "nightly"</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ParenthesizedGenericArguments.html"title="struct syn::ParenthesizedGenericArguments">ParenthesizedGenericArguments</a></div><divclass="desc docblock-short">Arguments of a function path segment: the <code>(A, B) -> C</code> in <code>Fn(A,B) -> C</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.PatConst.html"title="struct syn::PatConst">PatConst</a></div><divclass="desc docblock-short">A const block: <code>const { ... }</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.PatIdent.html"title="struct syn::PatIdent">PatIdent</a></div><divclass="desc docblock-short">A pattern that binds a new variable: <code>ref mut binding @ SUBPATTERN</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.PatLit.html"title="struct syn::PatLit">PatLit</a></div><divclass="desc docblock-short">A literal in place of an expression: <code>1</code>, <code>"foo"</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.PatMacro.html"title="struct syn::PatMacro">PatMacro</a></div><divclass="desc docblock-short">A macro invocation expression: <code>format!("{}", q)</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.PatOr.html"title="struct syn::PatOr">PatOr</a></div><divclass="desc docblock-short">A pattern that matches any one of a set of cases.</div></li><li><divclass="item-name"><aclass="struct"href="struct.PatParen.html"title="struct syn::PatParen">PatParen</a></div><divclass="desc docblock-short">A parenthesized pattern: <code>(A | B)</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.PatPath.html"title="struct syn::PatPath">PatPath</a></div><divclass="desc docblock-short">A path like <code>std::mem::replace</code> possibly containing generic
parameters and a qualified self-type.</div></li><li><divclass="item-name"><aclass="struct"href="struct.PatRange.html"title="struct syn::PatRange">PatRange</a></div><divclass="desc docblock-short">A range expression: <code>1..2</code>, <code>1..</code>, <code>..2</code>, <code>1..=2</code>, <code>..=2</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.PatReference.html"title="struct syn::PatReference">PatReference</a></div><divclass="desc docblock-short">A reference pattern: <code>&mut var</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.PatRest.html"title="struct syn::PatRest">PatRest</a></div><divclass="desc docblock-short">The dots in a tuple or slice pattern: <code>[0, 1, ..]</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.PatSlice.html"title="struct syn::PatSlice">PatSlice</a></div><divclass="desc docblock-short">A dynamically sized slice pattern: <code>[a, b, ref i @ .., y, z]</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.PatStruct.html"title="struct syn::PatStruct">PatStruct</a></div><divclass="desc docblock-short">A struct or struct variant pattern: <code>Variant { x, y, .. }</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.PatTuple.html"title="struct syn::PatTuple">PatTuple</a></div><divclass="desc docblock-short">A tuple pattern: <code>(a, b)</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.PatTupleStruct.html"title="struct syn::PatTupleStruct">PatTupleStruct</a></div><divclass="desc docblock-short">A tuple struct or tuple variant pattern: <code>Variant(x, y, .., z)</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.PatType.html"title="struct syn::PatType">PatType</a></div><divclass="desc docblock-short">A type ascription pattern: <code>foo: f64</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.PatWild.html"title="struct syn::PatWild">PatWild</a></div><divclass="desc docblock-short">A pattern that matches any value: <code>_</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.Path.html"title="struct syn::Path">Path</a></div><divclass="desc docblock-short">A path at which a named item is exported (e.g. <code>std::collections::HashMap</code>).</div></li><li><divclass="item-name"><aclass="struct"href="struct.PathSegment.html"title="struct syn::PathSegment">PathSegment</a></div><divclass="desc docblock-short">A segment of a path together with any path arguments on that segment.</div></li><li><divclass="item-name"><aclass="struct"href="struct.PredicateLifetime.html"title="struct syn::PredicateLifetime">PredicateLifetime</a></div><divclass="desc docblock-short">A lifetime predicate in a <code>where</code> clause: <code>'a: 'b + 'c</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.PredicateType.html"title="struct syn::PredicateType">PredicateType</a></div><divclass="desc docblock-short">A type predicate in a <code>where</code> clause: <code>for<'c> Foo<'c>: Trait<'c></code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.QSelf.html"title="struct syn::QSelf">QSelf</a></div><divclass="desc docblock-short">The explicit Self type in a qualified path: the <code>T</code> in <code><T as Display>::fmt</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.Receiver.html"title="struct syn::Receiver">Receiver</a></div><divclass="desc docblock-short">The <code>self</code> argument of an associated method.</div></li><li><divclass="item-name"><aclass="struct"href="struct.Signature.html"title="struct syn::Signature">Signature</a></div><divclass="desc docblock-short">A function signature in a trait or implementation: <code>unsafe fn initialize(&self)</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.StmtMacro.html"title="struct syn::StmtMacro">StmtMacro</a></div><divclass="desc docblock-short">A macro invocation in statement positi
a lifetime.</div></li><li><divclass="item-name"><aclass="struct"href="struct.TypeInfer.html"title="struct syn::TypeInfer">TypeInfer</a></div><divclass="desc docblock-short">Indication that a type should be inferred by the compiler: <code>_</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.TypeMacro.html"title="struct syn::TypeMacro">TypeMacro</a></div><divclass="desc docblock-short">A macro in the type position.</div></li><li><divclass="item-name"><aclass="struct"href="struct.TypeNever.html"title="struct syn::TypeNever">TypeNever</a></div><divclass="desc docblock-short">The never type: <code>!</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.TypeParam.html"title="struct syn::TypeParam">TypeParam</a></div><divclass="desc docblock-short">A generic type parameter: <code>T: Into<String></code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.TypeParen.html"title="struct syn::TypeParen">TypeParen</a></div><divclass="desc docblock-short">A parenthesized type equivalent to the inner type.</div></li><li><divclass="item-name"><aclass="struct"href="struct.TypePath.html"title="struct syn::TypePath">TypePath</a></div><divclass="desc docblock-short">A path like <code>std::slice::Iter</code>, optionally qualified with a
self-type as in <code><Vec<T> as SomeTrait>::Associated</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.TypePtr.html"title="struct syn::TypePtr">TypePtr</a></div><divclass="desc docblock-short">A raw pointer type: <code>*const T</code> or <code>*mut T</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.TypeReference.html"title="struct syn::TypeReference">TypeReference</a></div><divclass="desc docblock-short">A reference type: <code>&'a T</code> or <code>&'a mut T</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.TypeSlice.html"title="struct syn::TypeSlice">TypeSlice</a></div><divclass="desc docblock-short">A dynamically sized slice type: <code>[T]</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.TypeTraitObject.html"title="struct syn::TypeTraitObject">TypeTraitObject</a></div><divclass="desc docblock-short">A trait object type <code>dyn Bound1 + Bound2 + Bound3</code> where <code>Bound</code> is a
trait or a lifetime.</div></li><li><divclass="item-name"><aclass="struct"href="struct.TypeTuple.html"title="struct syn::TypeTuple">TypeTuple</a></div><divclass="desc docblock-short">A tuple type: <code>(A, B, C, String)</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.UseGlob.html"title="struct syn::UseGlob">UseGlob</a></div><divclass="desc docblock-short">A glob import in a <code>use</code> item: <code>*</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.UseGroup.html"title="struct syn::UseGroup">UseGroup</a></div><divclass="desc docblock-short">A braced group of imports in a <code>use</code> item: <code>{A, B, C}</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.UseName.html"title="struct syn::UseName">UseName</a></div><divclass="desc docblock-short">An identifier imported by a <code>use</code> item: <code>HashMap</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.UsePath.html"title="struct syn::UsePath">UsePath</a></div><divclass="desc docblock-short">A path prefix of imports in a <code>use</code> item: <code>std::...</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.UseRename.html"title="struct syn::UseRename">UseRename</a></div><divclass="desc docblock-short">An renamed identifier imported by a <code>use</code> item: <code>HashMap as Map</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.Variadic.html"title="struct syn::Variadic">Variadic</a></div><divclass="desc docblock-short">The variadic argument of a foreign function.</div></li><li><divclass="item-name"><aclass="struct"href="struct.Variant.html"title="struct syn::Variant">Variant</a></div><divclass="desc docblock-short">An enum variant.</div></li><li><divclass="item-name"><aclass="struct"href="struct.VisRestricted.html"title="struct syn::VisRestricted">VisRestricted</a></div><divclass="desc docblock-short">A visibility level restricted to some path: <code>pub(self)</code> or
<code>pub(super)</code> or <code>pub(crate)</code> or <code>pub(in some::module)</code>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.WhereClause.html"title="struct syn::WhereClause">WhereClause</a></div><divclass="desc docblock-short">A <code>where</code> clause in a definition: <code>where T: Deserialize<'de>, D: 'static</code>.</div></li></ul><h2id="enums"class="section-header"><ahref="#enums">Enums</a></h2><ulclass="item-table"><li><divclass="item-name"><aclass="enum"href="enum.AttrStyle.html"title="enum syn::AttrStyle">AttrStyle</a></div><divclass="desc docblock-short">Distinguishes between attributes that decorate an item and attributes
that are contained within an item.</div></li><li><divclass="item-name"><aclass="enum"href="enum.BinOp.html"title="enum syn::BinOp">BinOp</a></div><divclass="desc docblock-short">A binary operator: <code>+</code>, <code>+=</code>, <code>&</code>.</div></li><li><divclass="item-name"><aclass="enum"href="enum.Data.html"title="enum syn::Data">Data</a></div><divclass="desc docblock-short">The storage of a struct, enum or union data structure.</div></li><li><divclass="item-name"><aclass="enum"href="enum.Expr.html"title="enum syn::Expr">Expr</a></div><divclass="desc docblock-short">A Rust expression.</div></li><li><divclass="item-name"><aclass="enum"href="enum.FieldMutability.html"title="enum syn::FieldMutability">FieldMutability</a></div><divclass="desc docblock-short">Unused, but reserved for RFC 3323 restrictions.</div></li><li><divclass="item-name"><aclass="enum"href="enum.Fields.html"title="enum syn::Fields">Fields</a></div><divclass="desc docblock-short">Data stored within an enum variant or struct.</div></li><li><divclass="item-name"><aclass="enum"href="enum.FnArg.html"title="enum syn::FnArg">FnArg</a></div><divclass="desc docblock-short">An argument in a function signature: the <code>n: usize</code> in <code>fn f(n: usize)</code>.</div></li><li><divclass="item-name"><aclass="enum"href="enum.ForeignItem.html"title="enum syn::ForeignItem">ForeignItem</a></div><divclass="desc docblock-short">An item within an <code>extern</code> block.</div></li><li><divclass="item-name"><aclass="enum"href="enum.GenericArgument.html"title="enum syn::GenericArgument">GenericArgument</a></div><divclass="desc docblock-short">An individual generic argument, like <code>'a</code>, <code>T</code>, or <code>Item = T</code>.</div></li><li><divclass="item-name"><aclass="enum"href="enum.GenericParam.html"title="enum syn::GenericParam">GenericParam</a></div><divclass="desc docblock-short">A generic type parameter, lifetime, or const generic: <code>T: Into<String></code>,
<code>'a: 'b</code>, <code>const LEN: usize</code>.</div></li><li><divclass="item-name"><aclass="enum"href="enum.ImplItem.html"title="enum syn::ImplItem">ImplItem</a></div><divclass="desc docblock-short">An item within an impl block.</div></li><li><divclass="item-name"><aclass="enum"href="enum.ImplRestriction.html"title="enum syn::ImplRestriction">ImplRestriction</a></div><divclass="desc docblock-short">Unused, but reserved for RFC 3323 restrictions.</div></li><li><divclass="item-name"><aclass="enum"href="enum.Item.html"title="enum syn::Item">Item</a></div><divclass="desc docblock-short">Things that can appear directly inside of a module or scope.</div></li><li><divclass="item-name"><aclass="enum"href="enum.Lit.html"title="enum syn::Lit">Lit</a></div><divclass="desc docblock-short">A Rust literal such as a string or integer or boolean.</div></li><li><divclass="item-name"><aclass="enum"href="enum.MacroDelimiter.html"title="enum syn::MacroDelimiter">MacroDelimiter</a></div><divclass="desc docblock-short">A grouping token that surrounds a macro body: <code>m!(...)</code> or <code>m!{...}</code> or <code>m![...]</code>.</div></li><li><divclass="item-name"><aclass="enum"href="enum.Member.html"title="enum syn::Member">Member</a></div><divclass="desc docblock-short">A struct or tuple struct field accessed in a struct literal or field
expression.</div></li><li><divclass="item-name"><aclass="enum"href="enum.Meta.html"title="enum syn::Meta">Meta</a></div><divclass="desc docblock-short">Content of a compile-time structured attribute.</div></li><li><divclass="item-name"><aclass="enum"href="enum.Pat.html"title="enum syn::Pat">Pat</a></div><divclass="desc docblock-short">A pattern in a local binding, function signature, match expression, or
various other places.</div></li><li><divclass="item-name"><aclass="enum"href="enum.PathArguments.html"title="enum syn::PathArguments">PathArguments</a></div><divclass="desc docblock-short">Angle bracketed or parenthesized arguments of a path segment.</div></li><li><divclass="item-name"><aclass="enum"href="enum.RangeLimits.html"title="enum syn::RangeLimits">RangeLimits</a></div><divclass="desc docblock-short">Limit types of a range, inclusive or exclusive.</div></li><li><divclass="item-name"><aclass="enum"href="enum.ReturnType.html"title="enum syn::ReturnType">ReturnType</a></div><divclass="desc docblock-short">Return type of a function signature.</div></li><li><divclass="item-name"><aclass="enum"href="enum.StaticMutability.html"title="enum syn::StaticMutability">StaticMutability</a></div><divclass="desc docblock-short">The mutability of an <code>Item::Static</code> or <code>ForeignItem::Static</code>.</div></li><li><divclass="item-name"><aclass="enum"href="enum.Stmt.html"title="enum syn::Stmt">Stmt</a></div><divclass="desc docblock-short">A statement, usually ending in a semicolon.</div></li><li><divclass="item-name"><aclass="enum"href="enum.TraitBoundModifier.html"title="enum syn::TraitBoundModifier">TraitBoundModifier</a></div><divclass="desc docblock-short">A modifier on a trait bound, currently only used for the <code>?</code> in
<code>?Sized</code>.</div></li><li><divclass="item-name"><aclass="enum"href="enum.TraitItem.html"title="enum syn::TraitItem">TraitItem</a></div><divclass="desc docblock-short">An item declaration within the definition of a trait.</div></li><li><divclass="item-name"><aclass="enum"href="enum.Type.html"title="enum syn::Type">Type</a></div><divclass="desc docblock-short">The possible types that a Rust value could have.</div></li><li><divclass="item-name"><aclass="enum"href="enum.TypeParamBound.html"title="enum syn::TypeParamBound">TypeParamBound</a></div><divclass="desc docblock-short">A trait or lifetime used as a bound on a type parameter.</div></li><li><divclass="item-name"><aclass="enum"href="enum.UnOp.html"title="enum syn::UnOp">UnOp</a></div><divclass="desc docblock-short">A unary operator: <code>*</code>, <code>!</code>, <code>-</code>.</div></li><li><divclass="item-name"><aclass="enum"href="enum.UseTree.html"title="enum syn::UseTree">UseTree</a></div><divclass="desc docblock-short">A suffix of an import tree in a <code>use</code> item: <code>Type as Renamed</code> or <code>*</code>.</div></li><li><divclass="item-name"><aclass="enum"href="enum.Visibility.html"title="enum syn::Visibility">Visibility</a></div><divclass="desc docblock-short">The visibility level of an item: inherited or <code>pub</code> or
<code>pub(restricted)</code>.</div></li><li><divclass="item-name"><aclass="enum"href="enum.WherePredicate.html"title="enum syn::WherePredicate">WherePredicate</a></div><divclass="desc docblock-short">A single predicate in a <code>where</code> clause: <code>T: Deserialize<'de></code>.</div></li></ul><h2id="functions"class="section-header"><ahref="#functions">Functions</a></h2><ulclass="item-table"><li><divclass="item-name"><aclass="fn"href="fn.parse.html"title="fn syn::parse">parse</a></div><divclass="desc docblock-short">Parse tokens of source code into the chosen syntax tree node.</div></li><li><divclass="item-name"><aclass="fn"href="fn.parse2.html"title="fn syn::parse2">parse2</a></div><divclass="desc docblock-short">Parse a proc-macro2 token stream into the chosen syntax tree node.</div></li><li><divclass="item-name"><aclass="fn"href="fn.parse_file.html"title="fn syn::parse_file">parse_file</a></div><divclass="desc docblock-short">Parse the content of a file of Rust code.</div></li><li><divclass="item-name"><aclass="fn"href="fn.parse_str.html"title="fn syn::parse_str">parse_str</a></div><divclass="desc docblock-short">Parse a string of Rust code into the chosen syntax tree node.</div></li></ul><h2id="types"class="section-header"><ahref="#types">Type Aliases</a></h2><ulclass="item-table"><li><divclass="item-name"><aclass="type"href="type.Result.html"title="type syn::Result">Result</a></div><divclass="desc docblock-short">The result of a Syn parser.</div></li></ul></section></div></main></body></html>