scope_engine/language/
rust.rs1use super::{LanguageAdapter, LanguageQueries};
2use tree_sitter::Language;
3
4pub struct RustAdapter;
5
6impl RustAdapter {
7 pub fn new() -> Self {
8 Self
9 }
10}
11
12impl Default for RustAdapter {
13 fn default() -> Self {
14 Self::new()
15 }
16}
17
18impl LanguageAdapter for RustAdapter {
19 fn language_name(&self) -> &'static str {
20 "rust"
21 }
22
23 fn extensions(&self) -> &[&'static str] {
24 &["rs"]
25 }
26
27 fn language(&self) -> Language {
28 tree_sitter_rust::LANGUAGE.into()
29 }
30
31 fn queries(&self) -> LanguageQueries {
32 LanguageQueries {
33 definitions: r#"
34 (function_item name: (identifier) @name) @def
35 (struct_item name: (type_identifier) @name) @def
36 (enum_item name: (type_identifier) @name) @def
37 (impl_item type: (type_identifier) @name) @def
38 (trait_item name: (type_identifier) @name) @def
39 "#,
40 references: r#"
41 (call_expression function: (identifier) @ref) @call
42 (call_expression function: (scoped_identifier name: (identifier) @ref)) @call
43 (type_identifier) @ref
44 "#,
45 }
46 }
47}