Enum ra_ap_hir_expand::ExpandTo
source · [−]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
Statements
Items
Pattern
Type
Expr
Implementations
Trait Implementations
impl Copy for ExpandTo
impl Eq for ExpandTo
impl StructuralEq for ExpandTo
impl StructuralPartialEq for ExpandTo
Auto Trait Implementations
impl RefUnwindSafe for ExpandTo
impl Send for ExpandTo
impl Sync for ExpandTo
impl Unpin for ExpandTo
impl UnwindSafe for ExpandTo
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
sourcefn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to key
and return true
if they are equal.
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more