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
Span
of 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
match
expression:0..=10 => { return true; }
. - Assoc
Const - An equality constraint on an associated constant: the
PANIC = false
inTrait<PANIC = false>
. - Assoc
Type - A binding (equality constraint) on an associated type: the
Item = u8
inIterator<Item = u8>
. - Attribute
- An attribute, like
#[repr(transparent)]
. - Bare
FnArg - An argument in a function type: the
usize
infn(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_derive
macro. - Data
Struct - A struct input to a
proc_macro_derive
macro. - Data
Union - An untagged union input to a
proc_macro_derive
macro. - Derive
Input - Data structure sent to a
proc_macro_derive
macro. - 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
if
expression with an optionalelse
block: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
let
guard: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
match
expression: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::replace
possibly 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 place
or&raw mut place
. - Expr
Reference - A referencing operation:
&a
or&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
extern
block. - Foreign
Item Macro - A macro invocation within an extern block.
- Foreign
Item Static - A foreign static item in an
extern
block:static ext: u8
. - Foreign
Item Type - A foreign type in an
extern
block: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 crate
item: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 m
ormod 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:
true
orfalse
. - 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:
1f64
or1.0e10f64
. - LitInt
- An integer literal:
1
or1u16
. - LitStr
- A UTF-8 string literal:
"foo"
. - Local
- A local
let
binding:let x: u64 = s.parse()?;
. - Local
Init - The expression assigned in a local
let
binding, including optional divergingelse
block. - 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) -> C
inFn(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::replace
possibly 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
where
clause:'a: 'b + 'c
. - Predicate
Type - A type predicate in a
where
clause:for<'c> Foo<'c>: Trait<'c>
. - QSelf
- The explicit Self type in a qualified path: the
T
in<T as Display>::fmt
. - Receiver
- The
self
argument 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 + Bound3
type whereBound
is 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 T
or*mut T
. - Type
Reference - A reference type:
&'a T
or&'a mut T
. - Type
Slice - A dynamically sized slice type:
[T]
. - Type
Trait Object - A trait object type
dyn Bound1 + Bound2 + Bound3
whereBound
is a trait or a lifetime. - Type
Tuple - A tuple type:
(A, B, C, String)
. - UseGlob
- A glob import in a
use
item:*
. - UseGroup
- A braced group of imports in a
use
item:{A, B, C}
. - UseName
- An identifier imported by a
use
item:HashMap
. - UsePath
- A path prefix of imports in a
use
item:std::...
. - UseRename
- An renamed identifier imported by a
use
item: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
where
clause 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: usize
infn f(n: usize)
. - Foreign
Item - An item within an
extern
block. - 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::Static
orForeignItem::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
use
item:Type as Renamed
or*
. - Visibility
- The visibility level of an item: inherited or
pub
orpub(restricted)
. - Where
Predicate - A single predicate in a
where
clause: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.