pub trait LangImpl: Send + Sync {
Show 22 methods
// Required methods
fn name(&self) -> &str;
fn parse(&self, source: &str) -> Tree;
fn resolve_named_node(&self, kind: &str) -> Option<NodeTypeId>;
fn resolve_anonymous_node(&self, kind: &str) -> Option<NodeTypeId>;
fn resolve_field(&self, name: &str) -> Option<NodeFieldId>;
fn all_named_node_kinds(&self) -> Vec<&'static str>;
fn all_field_names(&self) -> Vec<&'static str>;
fn node_type_name(&self, node_type_id: NodeTypeId) -> Option<&'static str>;
fn field_name(&self, field_id: NodeFieldId) -> Option<&'static str>;
fn fields_for_node_type(
&self,
node_type_id: NodeTypeId,
) -> Vec<&'static str>;
fn is_supertype(&self, node_type_id: NodeTypeId) -> bool;
fn subtypes(&self, supertype: NodeTypeId) -> &[u16];
fn root(&self) -> Option<NodeTypeId>;
fn is_extra(&self, node_type_id: NodeTypeId) -> bool;
fn has_field(
&self,
node_type_id: NodeTypeId,
node_field_id: NodeFieldId,
) -> bool;
fn field_cardinality(
&self,
node_type_id: NodeTypeId,
node_field_id: NodeFieldId,
) -> Option<Cardinality>;
fn valid_field_types(
&self,
node_type_id: NodeTypeId,
node_field_id: NodeFieldId,
) -> &[NodeTypeId] ⓘ;
fn is_valid_field_type(
&self,
node_type_id: NodeTypeId,
node_field_id: NodeFieldId,
child: NodeTypeId,
) -> bool;
fn children_cardinality(
&self,
node_type_id: NodeTypeId,
) -> Option<Cardinality>;
fn valid_child_types(&self, node_type_id: NodeTypeId) -> &[NodeTypeId] ⓘ;
fn is_valid_child_type(
&self,
node_type_id: NodeTypeId,
child: NodeTypeId,
) -> bool;
fn grammar(&self) -> &Grammar;
}Expand description
Trait providing a unified facade for tree-sitter’s Language API combined with our node type constraints.
Required Methods§
fn name(&self) -> &str
fn resolve_named_node(&self, kind: &str) -> Option<NodeTypeId>
fn resolve_anonymous_node(&self, kind: &str) -> Option<NodeTypeId>
fn resolve_field(&self, name: &str) -> Option<NodeFieldId>
fn all_named_node_kinds(&self) -> Vec<&'static str>
fn all_field_names(&self) -> Vec<&'static str>
fn node_type_name(&self, node_type_id: NodeTypeId) -> Option<&'static str>
fn field_name(&self, field_id: NodeFieldId) -> Option<&'static str>
fn fields_for_node_type(&self, node_type_id: NodeTypeId) -> Vec<&'static str>
fn is_supertype(&self, node_type_id: NodeTypeId) -> bool
fn subtypes(&self, supertype: NodeTypeId) -> &[u16]
fn root(&self) -> Option<NodeTypeId>
fn is_extra(&self, node_type_id: NodeTypeId) -> bool
fn has_field( &self, node_type_id: NodeTypeId, node_field_id: NodeFieldId, ) -> bool
fn field_cardinality( &self, node_type_id: NodeTypeId, node_field_id: NodeFieldId, ) -> Option<Cardinality>
fn valid_field_types( &self, node_type_id: NodeTypeId, node_field_id: NodeFieldId, ) -> &[NodeTypeId] ⓘ
fn is_valid_field_type( &self, node_type_id: NodeTypeId, node_field_id: NodeFieldId, child: NodeTypeId, ) -> bool
fn children_cardinality(&self, node_type_id: NodeTypeId) -> Option<Cardinality>
fn valid_child_types(&self, node_type_id: NodeTypeId) -> &[NodeTypeId] ⓘ
fn is_valid_child_type( &self, node_type_id: NodeTypeId, child: NodeTypeId, ) -> bool
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".