AstNode

Trait AstNode 

Source
pub trait AstNode: Clone {
    // Required methods
    fn can_cast(kind: SyntaxKind) -> bool;
    fn cast(syntax: SyntaxNode) -> Option<Self>
       where Self: Sized;
    fn syntax(&self) -> &SyntaxNode;
}
Expand description

The main trait to go from untyped SyntaxNode to a typed ast. The conversion itself has zero runtime cost; ast and syntax nodes have exactly the same representation; a pointer to the tree root and a pointer to the node itself.

Required Methods§

Source

fn can_cast(kind: SyntaxKind) -> bool

Source

fn cast(syntax: SyntaxNode) -> Option<Self>
where Self: Sized,

Source

fn syntax(&self) -> &SyntaxNode

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl AstNode for ArgList

Source§

impl AstNode for ArrayExpr

Source§

impl AstNode for ArrayType

Source§

impl AstNode for BinExpr

Source§

impl AstNode for BindPat

Source§

impl AstNode for BlockExpr

Source§

impl AstNode for BreakExpr

Source§

impl AstNode for CallExpr

Source§

impl AstNode for Condition

Source§

impl AstNode for Expr

Source§

impl AstNode for ExprStmt

Source§

impl AstNode for FieldExpr

Source§

impl AstNode for FunctionDef

Source§

impl AstNode for IfExpr

Source§

impl AstNode for IndexExpr

Source§

impl AstNode for LetStmt

Source§

impl AstNode for Literal

Source§

impl AstNode for LoopExpr

Source§

impl AstNode for MemoryTypeSpecifier

Source§

impl AstNode for ModuleItem

Source§

impl AstNode for Name

Source§

impl AstNode for NameRef

Source§

impl AstNode for NeverType

Source§

impl AstNode for Param

Source§

impl AstNode for ParamList

Source§

impl AstNode for ParenExpr

Source§

impl AstNode for Pat

Source§

impl AstNode for Path

Source§

impl AstNode for PathExpr

Source§

impl AstNode for PathSegment

Source§

impl AstNode for PathType

Source§

impl AstNode for PlaceholderPat

Source§

impl AstNode for PrefixExpr

Source§

impl AstNode for RecordField

Source§

impl AstNode for RecordFieldDef

Source§

impl AstNode for RecordFieldDefList

Source§

impl AstNode for RecordFieldList

Source§

impl AstNode for RecordLit

Source§

impl AstNode for Rename

Source§

impl AstNode for RetType

Source§

impl AstNode for ReturnExpr

Source§

impl AstNode for SourceFile

Source§

impl AstNode for Stmt

Source§

impl AstNode for StructDef

Source§

impl AstNode for TupleFieldDef

Source§

impl AstNode for TupleFieldDefList

Source§

impl AstNode for TypeAliasDef

Source§

impl AstNode for TypeRef

Source§

impl AstNode for Use

Source§

impl AstNode for UseTree

Source§

impl AstNode for UseTreeList

Source§

impl AstNode for Visibility

Source§

impl AstNode for WhileExpr