Expand description
A Rust parser used by procedural macros.
See crate ::syn.
Modules§
- buffer
- A stably addressed token buffer supporting efficient traversal based on a cheaply copyable cursor.
- ext
- Extension traits to provide parsing methods on foreign types.
- meta
- Facility for interpreting structured content inside of an
Attribute. - parse
- Parsing interface for parsing a token stream into a syntax tree node.
- punctuated
- A punctuated sequence of syntax tree nodes separated by punctuation.
- spanned
- A trait that can provide the
Spanof the complete contents of a syntax tree node. - token
- Tokens representing Rust punctuation, keywords, and delimiters.
- visit_
mut - Syntax tree traversal to mutate an exclusive borrow of a syntax tree in place.
Macros§
- Token
- A type-macro that expands to the name of the Rust type representation of a given token.
- braced
- Parse a set of curly braces and expose their content to subsequent parsers.
- bracketed
- Parse a set of square brackets and expose their content to subsequent parsers.
- custom_
keyword - Define a type that supports parsing and printing a given identifier as if it were a keyword.
- custom_
punctuation - Define a type that supports parsing and printing a multi-character symbol as if it were a punctuation token.
- parenthesized
- Parse a set of parentheses and expose their content to subsequent parsers.
- parse_
macro_ input - Parse the input TokenStream of a macro, triggering a compile error if the tokens fail to parse.
- parse_
quote - Quasi-quotation macro that accepts input like the
quote!macro but uses type inference to figure out a return type for those tokens. - parse_
quote_ spanned - This macro is
parse_quote!+quote_spanned!.
Structs§
- Abi
- The binary interface of a function:
extern "C". - Angle
Bracketed Generic Arguments - Angle bracketed arguments of a path segment: the
<K, V>inHashMap<K, V>. - Arm
- One arm of a
matchexpression:0..=10 => { return true; }. - Assoc
Const - An equality constraint on an associated constant: the
PANIC = falseinTrait<PANIC = false>. - Assoc
Type - A binding (equality constraint) on an associated type: the
Item = u8inIterator<Item = u8>. - Attribute
- An attribute, like
#[repr(transparent)]. - Bare
FnArg - An argument in a function type: the
usizeinfn(usize) -> bool. - Bare
Variadic - The variadic argument of a function pointer like
fn(usize, ...). - Block
- A braced block containing Rust statements.
- Bound
Lifetimes - A set of bound lifetimes:
for<'a, 'b, 'c>. - Const
Param - A const generic parameter:
const LENGTH: usize. - Constraint
- An associated type bound:
Iterator<Item: Display>. - Data
Enum - An enum input to a
proc_macro_derivemacro. - Data
Struct - A struct input to a
proc_macro_derivemacro. - Data
Union - An untagged union input to a
proc_macro_derivemacro. - Derive
Input - Data structure sent to a
proc_macro_derivemacro. - Error
- Error returned when a Syn parser cannot parse the input tokens.
- Expr
Array - A slice literal expression:
[a, b, c, d]. - Expr
Assign - An assignment expression:
a = compute(). - Expr
Async - An async block:
async { ... }. - Expr
Await - An await expression:
fut.await. - Expr
Binary - A binary operation:
a + b,a += b. - Expr
Block - A blocked scope:
{ ... }. - Expr
Break - A
break, with an optional label to break and an optional expression. - Expr
Call - A function call expression:
invoke(a, b). - Expr
Cast - A cast expression:
foo as f64. - Expr
Closure - A closure expression:
|a, b| a + b. - Expr
Const - A const block:
const { ... }. - Expr
Continue - A
continue, with an optional label. - Expr
Field - Access of a named struct field (
obj.k) or unnamed tuple struct field (obj.0). - Expr
ForLoop - A for loop:
for pat in expr { ... }. - Expr
Group - An expression contained within invisible delimiters.
- ExprIf
- An
ifexpression with an optionalelseblock:if expr { ... } else { ... }. - Expr
Index - A square bracketed indexing expression:
vector[2]. - Expr
Infer - The inferred value of a const generic argument, denoted
_. - ExprLet
- A
letguard:let Some(x) = opt. - ExprLit
- A literal in place of an expression:
1,"foo". - Expr
Loop - Conditionless loop:
loop { ... }. - Expr
Macro - A macro invocation expression:
format!("{}", q). - Expr
Match - A
matchexpression:match n { Some(n) => {}, None => {} }. - Expr
Method Call - A method call expression:
x.foo::<T>(a, b). - Expr
Paren - A parenthesized expression:
(a + b). - Expr
Path - A path like
std::mem::replacepossibly containing generic parameters and a qualified self-type. - Expr
Range - A range expression:
1..2,1..,..2,1..=2,..=2. - Expr
RawAddr - Address-of operation:
&raw const placeor&raw mut place. - Expr
Reference - A referencing operation:
&aor&mut a. - Expr
Repeat - An array literal constructed from one repeated element:
[0u8; N]. - Expr
Return - A
return, with an optional value to be returned. - Expr
Struct - A struct literal expression:
Point { x: 1, y: 1 }. - ExprTry
- A try-expression:
expr?. - Expr
TryBlock - A try block:
try { ... }. - Expr
Tuple - A tuple expression:
(a, b, c, d). - Expr
Unary - A unary operation:
!x,*x. - Expr
Unsafe - An unsafe block:
unsafe { ... }. - Expr
While - A while loop:
while expr { ... }. - Expr
Yield - A yield expression:
yield expr. - Field
- A field of a struct or enum variant.
- Field
Pat - A single field in a struct pattern.
- Field
Value - A field-value pair in a struct literal.
- Fields
Named - Named fields of a struct or struct variant such as
Point { x: f64, y: f64 }. - Fields
Unnamed - Unnamed fields of a tuple struct or tuple variant such as
Some(T). - File
- A complete file of Rust source code.
- Foreign
Item Fn - A foreign function in an
externblock. - Foreign
Item Macro - A macro invocation within an extern block.
- Foreign
Item Static - A foreign static item in an
externblock:static ext: u8. - Foreign
Item Type - A foreign type in an
externblock:type void. - Generics
- Lifetimes and type parameters attached to a declaration of a function, enum, trait, etc.
- Ident
- A word of Rust code, which may be a keyword or legal variable name.
- Impl
Generics - Returned by
Generics::split_for_impl. - Impl
Item Const - An associated constant within an impl block.
- Impl
Item Fn - An associated function within an impl block.
- Impl
Item Macro - A macro invocation within an impl block.
- Impl
Item Type - An associated type within an impl block.
- Index
- The index of an unnamed tuple struct field.
- Item
Const - A constant item:
const MAX: u16 = 65535. - Item
Enum - An enum definition:
enum Foo<A, B> { A(A), B(B) }. - Item
Extern Crate - An
extern crateitem:extern crate serde. - ItemFn
- A free-standing function:
fn process(n: usize) -> Result<()> { ... }. - Item
Foreign Mod - A block of foreign items:
extern "C" { ... }. - Item
Impl - An impl block providing trait or associated items:
impl<A> Trait for Data<A> { ... }. - Item
Macro - A macro invocation, which includes
macro_rules!definitions. - ItemMod
- A module or module declaration:
mod mormod m { ... }. - Item
Static - A static item:
static BIKE: Shed = Shed(42). - Item
Struct - A struct definition:
struct Foo<A> { x: A }. - Item
Trait - A trait definition:
pub trait Iterator { ... }. - Item
Trait Alias - A trait alias:
pub trait SharableIterator = Iterator + Sync. - Item
Type - A type alias:
type Result<T> = std::result::Result<T, MyError>. - Item
Union - A union definition:
union Foo<A, B> { x: A, y: B }. - ItemUse
- A use declaration:
use std::collections::HashMap. - Label
- A lifetime labeling a
for,while, orloop. - Lifetime
- A Rust lifetime:
'a. - Lifetime
Param - A lifetime definition:
'a: 'b + 'c + 'd. - LitBool
- A boolean literal:
trueorfalse. - LitByte
- A byte literal:
b'f'. - LitByte
Str - A byte string literal:
b"foo". - LitCStr
- A nul-terminated C-string literal:
c"foo". - LitChar
- A character literal:
'a'. - LitFloat
- A floating point literal:
1f64or1.0e10f64. - LitInt
- An integer literal:
1or1u16. - LitStr
- A UTF-8 string literal:
"foo". - Local
- A local
letbinding:let x: u64 = s.parse()?;. - Local
Init - The expression assigned in a local
letbinding, including optional divergingelseblock. - Macro
- A macro invocation:
println!("{}", mac). - Meta
List - A structured list within an attribute, like
derive(Copy, Clone). - Meta
Name Value - A name-value pair within an attribute, like
feature = "nightly". - Parenthesized
Generic Arguments - Arguments of a function path segment: the
(A, B) -> CinFn(A,B) -> C. - PatConst
- A const block:
const { ... }. - PatIdent
- A pattern that binds a new variable:
ref mut binding @ SUBPATTERN. - PatLit
- A literal in place of an expression:
1,"foo". - PatMacro
- A macro invocation expression:
format!("{}", q). - PatOr
- A pattern that matches any one of a set of cases.
- PatParen
- A parenthesized pattern:
(A | B). - PatPath
- A path like
std::mem::replacepossibly containing generic parameters and a qualified self-type. - PatRange
- A range expression:
1..2,1..,..2,1..=2,..=2. - PatReference
- A reference pattern:
&mut var. - PatRest
- The dots in a tuple or slice pattern:
[0, 1, ..]. - PatSlice
- A dynamically sized slice pattern:
[a, b, ref i @ .., y, z]. - PatStruct
- A struct or struct variant pattern:
Variant { x, y, .. }. - PatTuple
- A tuple pattern:
(a, b). - PatTuple
Struct - A tuple struct or tuple variant pattern:
Variant(x, y, .., z). - PatType
- A type ascription pattern:
foo: f64. - PatWild
- A pattern that matches any value:
_. - Path
- A path at which a named item is exported (e.g.
std::collections::HashMap). - Path
Segment - A segment of a path together with any path arguments on that segment.
- Precise
Capture - Precise capturing bound: the ‘use<…>’ in
impl Trait + use<'a, T>. - Predicate
Lifetime - A lifetime predicate in a
whereclause:'a: 'b + 'c. - Predicate
Type - A type predicate in a
whereclause:for<'c> Foo<'c>: Trait<'c>. - QSelf
- The explicit Self type in a qualified path: the
Tin<T as Display>::fmt. - Receiver
- The
selfargument of an associated method. - Signature
- A function signature in a trait or implementation:
unsafe fn initialize(&self). - Stmt
Macro - A macro invocation in statement position.
- Trait
Bound - A trait used as a bound on a type parameter.
- Trait
Item Const - An associated constant within the definition of a trait.
- Trait
Item Fn - An associated function within the definition of a trait.
- Trait
Item Macro - A macro invocation within the definition of a trait.
- Trait
Item Type - An associated type within the definition of a trait.
- Turbofish
- Returned by
TypeGenerics::as_turbofish. - Type
Array - A fixed size array type:
[T; n]. - Type
Bare Fn - A bare function type:
fn(usize) -> bool. - Type
Generics - Returned by
Generics::split_for_impl. - Type
Group - A type contained within invisible delimiters.
- Type
Impl Trait - An
impl Bound1 + Bound2 + Bound3type whereBoundis a trait or a lifetime. - Type
Infer - Indication that a type should be inferred by the compiler:
_. - Type
Macro - A macro in the type position.
- Type
Never - The never type:
!. - Type
Param - A generic type parameter:
T: Into<String>. - Type
Paren - A parenthesized type equivalent to the inner type.
- Type
Path - A path like
std::slice::Iter, optionally qualified with a self-type as in<Vec<T> as SomeTrait>::Associated. - TypePtr
- A raw pointer type:
*const Tor*mut T. - Type
Reference - A reference type:
&'a Tor&'a mut T. - Type
Slice - A dynamically sized slice type:
[T]. - Type
Trait Object - A trait object type
dyn Bound1 + Bound2 + Bound3whereBoundis a trait or a lifetime. - Type
Tuple - A tuple type:
(A, B, C, String). - UseGlob
- A glob import in a
useitem:*. - UseGroup
- A braced group of imports in a
useitem:{A, B, C}. - UseName
- An identifier imported by a
useitem:HashMap. - UsePath
- A path prefix of imports in a
useitem:std::.... - UseRename
- An renamed identifier imported by a
useitem:HashMap as Map. - Variadic
- The variadic argument of a foreign function.
- Variant
- An enum variant.
- VisRestricted
- A visibility level restricted to some path:
pub(self)orpub(super)orpub(crate)orpub(in some::module). - Where
Clause - A
whereclause in a definition:where T: Deserialize<'de>, D: 'static.
Enums§
- Attr
Style - Distinguishes between attributes that decorate an item and attributes that are contained within an item.
- BinOp
- A binary operator:
+,+=,&. - Captured
Param - Single parameter in a precise capturing bound.
- Data
- The storage of a struct, enum or union data structure.
- Expr
- A Rust expression.
- Field
Mutability - Unused, but reserved for RFC 3323 restrictions.
- Fields
- Data stored within an enum variant or struct.
- FnArg
- An argument in a function signature: the
n: usizeinfn f(n: usize). - Foreign
Item - An item within an
externblock. - Generic
Argument - An individual generic argument, like
'a,T, orItem = T. - Generic
Param - A generic type parameter, lifetime, or const generic:
T: Into<String>,'a: 'b,const LEN: usize. - Impl
Item - An item within an impl block.
- Impl
Restriction - Unused, but reserved for RFC 3323 restrictions.
- Item
- Things that can appear directly inside of a module or scope.
- Lit
- A Rust literal such as a string or integer or boolean.
- Macro
Delimiter - A grouping token that surrounds a macro body:
m!(...)orm!{...}orm![...]. - Member
- A struct or tuple struct field accessed in a struct literal or field expression.
- Meta
- Content of a compile-time structured attribute.
- Pat
- A pattern in a local binding, function signature, match expression, or various other places.
- Path
Arguments - Angle bracketed or parenthesized arguments of a path segment.
- Pointer
Mutability - Mutability of a raw pointer (
*const T,*mut T), in which non-mutable isn’t the implicit default. - Range
Limits - Limit types of a range, inclusive or exclusive.
- Return
Type - Return type of a function signature.
- Static
Mutability - The mutability of an
Item::StaticorForeignItem::Static. - Stmt
- A statement, usually ending in a semicolon.
- Trait
Bound Modifier - A modifier on a trait bound, currently only used for the
?in?Sized. - Trait
Item - An item declaration within the definition of a trait.
- Type
- The possible types that a Rust value could have.
- Type
Param Bound - A trait or lifetime used as a bound on a type parameter.
- UnOp
- A unary operator:
*,!,-. - UseTree
- A suffix of an import tree in a
useitem:Type as Renamedor*. - Visibility
- The visibility level of an item: inherited or
puborpub(restricted). - Where
Predicate - A single predicate in a
whereclause:T: Deserialize<'de>.
Functions§
- parse
- Parse tokens of source code into the chosen syntax tree node.
- parse2
- Parse a proc-macro2 token stream into the chosen syntax tree node.
- parse_
file - Parse the content of a file of Rust code.
- parse_
str - Parse a string of Rust code into the chosen syntax tree node.
Type Aliases§
- Result
- The result of a Syn parser.