Skip to main content

AstNode

Trait AstNode 

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

Trait implemented by all typed AST node wrappers.

Provides the ability to check, cast, and unwrap SyntaxNode values into their strongly-typed AST representations. All implementations are zero-cost: casting is a simple kind check followed by a newtype wrap.

Required Methods§

Source

fn can_cast(kind: SyntaxKind) -> bool

Returns true if a SyntaxNode with the given kind can be cast to this AST type.

Source

fn cast(node: SyntaxNode) -> Option<Self>

Attempt to cast a SyntaxNode into this AST type.

Returns Some(Self) if the node’s kind matches, None otherwise.

Source

fn syntax(&self) -> &SyntaxNode

Return a reference to the underlying SyntaxNode.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl AstNode for ArrayExpr

Source§

impl AstNode for AssertStmt

Source§

impl AstNode for AssignStmt

Source§

impl AstNode for BinaryExpr

Source§

impl AstNode for Block

Source§

impl AstNode for BooleanType

Source§

impl AstNode for BytesExpr

Source§

impl AstNode for BytesType

Source§

impl AstNode for CallExpr

Source§

impl AstNode for CastExpr

Source§

impl AstNode for CircuitDecl

Source§

impl AstNode for CircuitDef

Source§

impl AstNode for ConstStmt

Source§

impl AstNode for ConstructorDef

Source§

impl AstNode for ContractCircuit

Source§

impl AstNode for ContractDecl

Source§

impl AstNode for DefaultExpr

Source§

impl AstNode for DiscloseExpr

Source§

impl AstNode for EnumDef

Source§

impl AstNode for EnumVariant

Source§

impl AstNode for ExportList

Source§

impl AstNode for Expr

Source§

impl AstNode for ExprStmt

Source§

impl AstNode for FieldType

Source§

impl AstNode for FoldExpr

Source§

impl AstNode for ForStmt

Source§

impl AstNode for GenericArg

Source§

impl AstNode for GenericArgList

Source§

impl AstNode for GenericParam

Source§

impl AstNode for GenericParamList

Source§

impl AstNode for IdentPat

Source§

impl AstNode for IfStmt

Source§

impl AstNode for Import

Source§

impl AstNode for ImportSpecifier

Source§

impl AstNode for Include

Source§

impl AstNode for IndexExpr

Source§

impl AstNode for Item

Source§

impl AstNode for LambdaExpr

Source§

impl AstNode for LedgerDecl

Source§

impl AstNode for LiteralExpr

Source§

impl AstNode for MapExpr

Source§

impl AstNode for MemberExpr

Source§

impl AstNode for ModuleDef

Source§

impl AstNode for MultiConstStmt

Source§

impl AstNode for NameExpr

Source§

impl AstNode for OpaqueType

Source§

impl AstNode for PadExpr

Source§

impl AstNode for Param

Source§

impl AstNode for ParamList

Source§

impl AstNode for ParenExpr

Source§

impl AstNode for Pat

Source§

impl AstNode for Pragma

Source§

impl AstNode for PrefixDecl

Source§

impl AstNode for RecordType

Source§

impl AstNode for ReturnStmt

Source§

impl AstNode for SliceExpr

Source§

impl AstNode for SourceFile

Source§

impl AstNode for SpreadExpr

Source§

impl AstNode for Stmt

Source§

impl AstNode for StructDef

Source§

impl AstNode for StructExpr

Source§

impl AstNode for StructField

Source§

impl AstNode for StructFieldInit

Source§

impl AstNode for StructPat

Source§

impl AstNode for StructPatField

Source§

impl AstNode for StructUpdate

Source§

impl AstNode for TernaryExpr

Source§

impl AstNode for TuplePat

Source§

impl AstNode for TuplePatElt

Source§

impl AstNode for TupleType

Source§

impl AstNode for Type

Source§

impl AstNode for TypeDecl

Source§

impl AstNode for TypeRef

Source§

impl AstNode for TypeSize

Source§

impl AstNode for UintType

Source§

impl AstNode for UnaryExpr

Source§

impl AstNode for UnsignedIntegerType

Source§

impl AstNode for VectorType

Source§

impl AstNode for WitnessDecl