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

    // Provided methods
    fn source_string(&self) -> String { ... }
    fn clone_for_update(&self) -> Self
       where Self: Sized { ... }
    fn clone_subtree(&self) -> Self
       where Self: Sized { ... }
}
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) -> boolwhere Self: Sized,

source

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

source

fn syntax(&self) -> &SyntaxNode

Provided Methods§

source

fn source_string(&self) -> String

source

fn clone_for_update(&self) -> Selfwhere Self: Sized,

source

fn clone_subtree(&self) -> Selfwhere Self: Sized,

Implementors§

source§

impl AstNode for Definition

source§

impl AstNode for Selection

source§

impl AstNode for Type

source§

impl AstNode for Value

source§

impl AstNode for Alias

source§

impl AstNode for Argument

source§

impl AstNode for Arguments

source§

impl AstNode for ArgumentsDefinition

source§

impl AstNode for BooleanValue

source§

impl AstNode for DefaultValue

source§

impl AstNode for Description

source§

impl AstNode for Directive

source§

impl AstNode for DirectiveDefinition

source§

impl AstNode for DirectiveLocation

source§

impl AstNode for DirectiveLocations

source§

impl AstNode for Directives

source§

impl AstNode for Document

source§

impl AstNode for EnumTypeDefinition

source§

impl AstNode for EnumTypeExtension

source§

impl AstNode for EnumValue

source§

impl AstNode for EnumValueDefinition

source§

impl AstNode for EnumValuesDefinition

source§

impl AstNode for Field

source§

impl AstNode for FieldDefinition

source§

impl AstNode for FieldsDefinition

source§

impl AstNode for FloatValue

source§

impl AstNode for FragmentDefinition

source§

impl AstNode for FragmentName

source§

impl AstNode for FragmentSpread

source§

impl AstNode for ImplementsInterfaces

source§

impl AstNode for InlineFragment

source§

impl AstNode for InputFieldsDefinition

source§

impl AstNode for InputObjectTypeDefinition

source§

impl AstNode for InputObjectTypeExtension

source§

impl AstNode for InputValueDefinition

source§

impl AstNode for IntValue

source§

impl AstNode for InterfaceTypeDefinition

source§

impl AstNode for InterfaceTypeExtension

source§

impl AstNode for ListType

source§

impl AstNode for ListValue

source§

impl AstNode for Name

source§

impl AstNode for NamedType

source§

impl AstNode for NonNullType

source§

impl AstNode for NullValue

source§

impl AstNode for ObjectField

source§

impl AstNode for ObjectTypeDefinition

source§

impl AstNode for ObjectTypeExtension

source§

impl AstNode for ObjectValue

source§

impl AstNode for OperationDefinition

source§

impl AstNode for OperationType

source§

impl AstNode for RootOperationTypeDefinition

source§

impl AstNode for ScalarTypeDefinition

source§

impl AstNode for ScalarTypeExtension

source§

impl AstNode for SchemaDefinition

source§

impl AstNode for SchemaExtension

source§

impl AstNode for SelectionSet

source§

impl AstNode for StringValue

source§

impl AstNode for TypeCondition

source§

impl AstNode for UnionMemberTypes

source§

impl AstNode for UnionTypeDefinition

source§

impl AstNode for UnionTypeExtension

source§

impl AstNode for Variable

source§

impl AstNode for VariableDefinition

source§

impl AstNode for VariableDefinitions