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".
- AngleBracketed 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; }.
- AssocConst 
- An equality constraint on an associated constant: the PANIC = falseinTrait<PANIC = false>.
- AssocType 
- A binding (equality constraint) on an associated type: the Item = u8inIterator<Item = u8>.
- Attribute
- An attribute, like #[repr(transparent)].
- BareFnArg 
- An argument in a function type: the usizeinfn(usize) -> bool.
- BareVariadic 
- The variadic argument of a function pointer like fn(usize, ...).
- Block
- A braced block containing Rust statements.
- BoundLifetimes 
- A set of bound lifetimes: for<'a, 'b, 'c>.
- ConstParam 
- A const generic parameter: const LENGTH: usize.
- Constraint
- An associated type bound: Iterator<Item: Display>.
- DataEnum 
- An enum input to a proc_macro_derivemacro.
- DataStruct 
- A struct input to a proc_macro_derivemacro.
- DataUnion 
- An untagged union input to a proc_macro_derivemacro.
- DeriveInput 
- Data structure sent to a proc_macro_derivemacro.
- Error
- Error returned when a Syn parser cannot parse the input tokens.
- ExprArray 
- A slice literal expression: [a, b, c, d].
- ExprAssign 
- An assignment expression: a = compute().
- ExprAsync 
- An async block: async { ... }.
- ExprAwait 
- An await expression: fut.await.
- ExprBinary 
- A binary operation: a + b,a += b.
- ExprBlock 
- A blocked scope: { ... }.
- ExprBreak 
- A break, with an optional label to break and an optional expression.
- ExprCall 
- A function call expression: invoke(a, b).
- ExprCast 
- A cast expression: foo as f64.
- ExprClosure 
- A closure expression: |a, b| a + b.
- ExprConst 
- A const block: const { ... }.
- ExprContinue 
- A continue, with an optional label.
- ExprField 
- Access of a named struct field (obj.k) or unnamed tuple struct field (obj.0).
- ExprForLoop 
- A for loop: for pat in expr { ... }.
- ExprGroup 
- An expression contained within invisible delimiters.
- ExprIf
- An ifexpression with an optionalelseblock:if expr { ... } else { ... }.
- ExprIndex 
- A square bracketed indexing expression: vector[2].
- ExprInfer 
- 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".
- ExprLoop 
- Conditionless loop: loop { ... }.
- ExprMacro 
- A macro invocation expression: format!("{}", q).
- ExprMatch 
- A matchexpression:match n { Some(n) => {}, None => {} }.
- ExprMethod Call 
- A method call expression: x.foo::<T>(a, b).
- ExprParen 
- A parenthesized expression: (a + b).
- ExprPath 
- A path like std::mem::replacepossibly containing generic parameters and a qualified self-type.
- ExprRange 
- A range expression: 1..2,1..,..2,1..=2,..=2.
- ExprRawAddr 
- Address-of operation: &raw const placeor&raw mut place.
- ExprReference 
- A referencing operation: &aor&mut a.
- ExprRepeat 
- An array literal constructed from one repeated element: [0u8; N].
- ExprReturn 
- A return, with an optional value to be returned.
- ExprStruct 
- A struct literal expression: Point { x: 1, y: 1 }.
- ExprTry
- A try-expression: expr?.
- ExprTryBlock 
- A try block: try { ... }.
- ExprTuple 
- A tuple expression: (a, b, c, d).
- ExprUnary 
- A unary operation: !x,*x.
- ExprUnsafe 
- An unsafe block: unsafe { ... }.
- ExprWhile 
- A while loop: while expr { ... }.
- ExprYield 
- A yield expression: yield expr.
- Field
- A field of a struct or enum variant.
- FieldPat 
- A single field in a struct pattern.
- FieldValue 
- A field-value pair in a struct literal.
- FieldsNamed 
- Named fields of a struct or struct variant such as Point { x: f64, y: f64 }.
- FieldsUnnamed 
- Unnamed fields of a tuple struct or tuple variant such as Some(T).
- File
- A complete file of Rust source code.
- ForeignItem Fn 
- A foreign function in an externblock.
- ForeignItem Macro 
- A macro invocation within an extern block.
- ForeignItem Static 
- A foreign static item in an externblock:static ext: u8.
- ForeignItem 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.
- ImplGenerics 
- Returned by Generics::split_for_impl.
- ImplItem Const 
- An associated constant within an impl block.
- ImplItem Fn 
- An associated function within an impl block.
- ImplItem Macro 
- A macro invocation within an impl block.
- ImplItem Type 
- An associated type within an impl block.
- Index
- The index of an unnamed tuple struct field.
- ItemConst 
- A constant item: const MAX: u16 = 65535.
- ItemEnum 
- An enum definition: enum Foo<A, B> { A(A), B(B) }.
- ItemExtern Crate 
- An extern crateitem:extern crate serde.
- ItemFn
- A free-standing function: fn process(n: usize) -> Result<()> { ... }.
- ItemForeign Mod 
- A block of foreign items: extern "C" { ... }.
- ItemImpl 
- An impl block providing trait or associated items: impl<A> Trait for Data<A> { ... }.
- ItemMacro 
- A macro invocation, which includes macro_rules!definitions.
- ItemMod
- A module or module declaration: mod mormod m { ... }.
- ItemStatic 
- A static item: static BIKE: Shed = Shed(42).
- ItemStruct 
- A struct definition: struct Foo<A> { x: A }.
- ItemTrait 
- A trait definition: pub trait Iterator { ... }.
- ItemTrait Alias 
- A trait alias: pub trait SharableIterator = Iterator + Sync.
- ItemType 
- A type alias: type Result<T> = std::result::Result<T, MyError>.
- ItemUnion 
- 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.
- LifetimeParam 
- A lifetime definition: 'a: 'b + 'c + 'd.
- LitBool
- A boolean literal: trueorfalse.
- LitByte
- A byte literal: b'f'.
- LitByteStr 
- 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()?;.
- LocalInit 
- The expression assigned in a local letbinding, including optional divergingelseblock.
- Macro
- A macro invocation: println!("{}", mac).
- MetaList 
- A structured list within an attribute, like derive(Copy, Clone).
- MetaName Value 
- A name-value pair within an attribute, like feature = "nightly".
- ParenthesizedGeneric 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).
- PatTupleStruct 
- 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).
- PathSegment 
- A segment of a path together with any path arguments on that segment.
- PreciseCapture 
- Precise capturing bound: the ‘use<…>’ in impl Trait + use<'a, T>.
- PredicateLifetime 
- A lifetime predicate in a whereclause:'a: 'b + 'c.
- PredicateType 
- 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).
- StmtMacro 
- A macro invocation in statement position.
- TraitBound 
- A trait used as a bound on a type parameter.
- TraitItem Const 
- An associated constant within the definition of a trait.
- TraitItem Fn 
- An associated function within the definition of a trait.
- TraitItem Macro 
- A macro invocation within the definition of a trait.
- TraitItem Type 
- An associated type within the definition of a trait.
- Turbofish
- Returned by TypeGenerics::as_turbofish.
- TypeArray 
- A fixed size array type: [T; n].
- TypeBare Fn 
- A bare function type: fn(usize) -> bool.
- TypeGenerics 
- Returned by Generics::split_for_impl.
- TypeGroup 
- A type contained within invisible delimiters.
- TypeImpl Trait 
- An impl Bound1 + Bound2 + Bound3type whereBoundis a trait or a lifetime.
- TypeInfer 
- Indication that a type should be inferred by the compiler: _.
- TypeMacro 
- A macro in the type position.
- TypeNever 
- The never type: !.
- TypeParam 
- A generic type parameter: T: Into<String>.
- TypeParen 
- A parenthesized type equivalent to the inner type.
- TypePath 
- 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.
- TypeReference 
- A reference type: &'a Tor&'a mut T.
- TypeSlice 
- A dynamically sized slice type: [T].
- TypeTrait Object 
- A trait object type dyn Bound1 + Bound2 + Bound3whereBoundis a trait or a lifetime.
- TypeTuple 
- 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).
- WhereClause 
- A whereclause in a definition:where T: Deserialize<'de>, D: 'static.
Enums§
- AttrStyle 
- Distinguishes between attributes that decorate an item and attributes that are contained within an item.
- BinOp
- A binary operator: +,+=,&.
- CapturedParam 
- Single parameter in a precise capturing bound.
- Data
- The storage of a struct, enum or union data structure.
- Expr
- A Rust expression.
- FieldMutability 
- 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).
- ForeignItem 
- An item within an externblock.
- GenericArgument 
- An individual generic argument, like 'a,T, orItem = T.
- GenericParam 
- A generic type parameter, lifetime, or const generic: T: Into<String>,'a: 'b,const LEN: usize.
- ImplItem 
- An item within an impl block.
- ImplRestriction 
- 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.
- MacroDelimiter 
- 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.
- PathArguments 
- Angle bracketed or parenthesized arguments of a path segment.
- PointerMutability 
- Mutability of a raw pointer (*const T,*mut T), in which non-mutable isn’t the implicit default.
- RangeLimits 
- Limit types of a range, inclusive or exclusive.
- ReturnType 
- Return type of a function signature.
- StaticMutability 
- The mutability of an Item::StaticorForeignItem::Static.
- Stmt
- A statement, usually ending in a semicolon.
- TraitBound Modifier 
- A modifier on a trait bound, currently only used for the ?in?Sized.
- TraitItem 
- An item declaration within the definition of a trait.
- Type
- The possible types that a Rust value could have.
- TypeParam 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).
- WherePredicate 
- 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.