Skip to main content

scope_engine/language/
rust.rs

1use 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}