macro_rules! match_ast {
    (match $node:ident { $($tt:tt)* }) => { ... };
    (match ($node:expr) {
        $( $( $path:ident )::+ ($it:pat) => $res:expr, )*
        _ => $catch_all:expr $(,)?
    }) => { ... };
}
Expand description

Matches a SyntaxNode against an ast type.

Example:

match_ast! {
    match node {
        ast::CallExpr(it) => { ... },
        ast::MethodCallExpr(it) => { ... },
        ast::MacroCall(it) => { ... },
        _ => None,
    }
}