Enum ra_ap_hir_expand::ExpandTo [−][src]
pub enum ExpandTo {
Statements,
Items,
Pattern,
Type,
Expr,
}
Expand description
In Rust, macros expand token trees to token trees. When we want to turn a
token tree into an AST node, we need to figure out what kind of AST node we
want: something like foo
can be a type, an expression, or a pattern.
Naively, one would think that “what this expands to” is a property of a
particular macro: macro m1
returns an item, while macro m2
returns an
expression, etc. That’s not the case – macros are polymorphic in the
result, and can expand to any type of the AST node.
What defines the actual AST node is the syntactic context of the macro
invocation. As a contrived example, in let T![*] = T![*];
the first T
expands to a pattern, while the second one expands to an expression.
ExpandTo
captures this bit of information about a particular macro call
site.
Variants
Implementations
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for ExpandTo
impl UnwindSafe for ExpandTo
Blanket Implementations
Mutably borrows from an owned value. Read more
Compare self to key
and return true
if they are equal.
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more