aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/code_model_api.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/code_model_api.rs')
-rw-r--r--crates/ra_hir/src/code_model_api.rs26
1 files changed, 26 insertions, 0 deletions
diff --git a/crates/ra_hir/src/code_model_api.rs b/crates/ra_hir/src/code_model_api.rs
new file mode 100644
index 000000000..e8b3a1fb6
--- /dev/null
+++ b/crates/ra_hir/src/code_model_api.rs
@@ -0,0 +1,26 @@
1use ra_db::{CrateId, Cancelable};
2
3use crate::{Module, Name, db::HirDatabase};
4
5/// hir::Crate describes a single crate. It's the main inteface with which
6/// crate's dependencies interact. Mostly, it should be just a proxy for the
7/// root module.
8#[derive(Debug, Clone, PartialEq, Eq, Hash)]
9pub struct Crate {
10 pub(crate) crate_id: CrateId,
11}
12
13#[derive(Debug)]
14pub struct CrateDependency {
15 pub krate: Crate,
16 pub name: Name,
17}
18
19impl Crate {
20 pub fn dependencies(&self, db: &impl HirDatabase) -> Vec<CrateDependency> {
21 self.dependencies_impl(db)
22 }
23 pub fn root_module(&self, db: &impl HirDatabase) -> Cancelable<Option<Module>> {
24 self.root_module_impl(db)
25 }
26}