diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2020-03-19 17:47:43 +0000 |
---|---|---|
committer | GitHub <[email protected]> | 2020-03-19 17:47:43 +0000 |
commit | 1ba03c6995015b3143a417ed07437f0c9028a97d (patch) | |
tree | ce3eb047dd9fe9005750a3b1417d95b1aa8fe01e /crates/ra_project_model/src | |
parent | 988f1dda6bde576ec2457dd97a7525014609c771 (diff) | |
parent | f840fcb2f525c13809d6a736e434155edf075a06 (diff) |
Merge #3656
3656: Simplify arenas r=matklad a=matklad
At the moment, Arena is paranetrized by two types: index and data. The original motivation was to allow index to be defined in the downstream crate, so that you can add inherent impls to the index.
However, it seems like we've never actually used that capability, so perhaps we should switch to a generic Index impl? This PR tries this out, switching only `raw.rs` and parts of `hir_def`.
wdyt?
Co-authored-by: Aleksey Kladov <[email protected]>
Diffstat (limited to 'crates/ra_project_model/src')
-rw-r--r-- | crates/ra_project_model/src/cargo_workspace.rs | 14 | ||||
-rw-r--r-- | crates/ra_project_model/src/sysroot.rs | 8 |
2 files changed, 8 insertions, 14 deletions
diff --git a/crates/ra_project_model/src/cargo_workspace.rs b/crates/ra_project_model/src/cargo_workspace.rs index 43dbd096a..c2857dbfc 100644 --- a/crates/ra_project_model/src/cargo_workspace.rs +++ b/crates/ra_project_model/src/cargo_workspace.rs | |||
@@ -7,7 +7,7 @@ use std::{ | |||
7 | 7 | ||
8 | use anyhow::{Context, Result}; | 8 | use anyhow::{Context, Result}; |
9 | use cargo_metadata::{CargoOpt, Message, MetadataCommand, PackageId}; | 9 | use cargo_metadata::{CargoOpt, Message, MetadataCommand, PackageId}; |
10 | use ra_arena::{impl_arena_id, Arena, RawId}; | 10 | use ra_arena::{Arena, Idx}; |
11 | use ra_cargo_watch::run_cargo; | 11 | use ra_cargo_watch::run_cargo; |
12 | use ra_db::Edition; | 12 | use ra_db::Edition; |
13 | use rustc_hash::FxHashMap; | 13 | use rustc_hash::FxHashMap; |
@@ -22,8 +22,8 @@ use serde::Deserialize; | |||
22 | /// concepts. | 22 | /// concepts. |
23 | #[derive(Debug, Clone)] | 23 | #[derive(Debug, Clone)] |
24 | pub struct CargoWorkspace { | 24 | pub struct CargoWorkspace { |
25 | packages: Arena<Package, PackageData>, | 25 | packages: Arena<PackageData>, |
26 | targets: Arena<Target, TargetData>, | 26 | targets: Arena<TargetData>, |
27 | workspace_root: PathBuf, | 27 | workspace_root: PathBuf, |
28 | } | 28 | } |
29 | 29 | ||
@@ -69,13 +69,9 @@ impl Default for CargoFeatures { | |||
69 | } | 69 | } |
70 | } | 70 | } |
71 | 71 | ||
72 | #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] | 72 | pub type Package = Idx<PackageData>; |
73 | pub struct Package(RawId); | ||
74 | impl_arena_id!(Package); | ||
75 | 73 | ||
76 | #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] | 74 | pub type Target = Idx<TargetData>; |
77 | pub struct Target(RawId); | ||
78 | impl_arena_id!(Target); | ||
79 | 75 | ||
80 | #[derive(Debug, Clone)] | 76 | #[derive(Debug, Clone)] |
81 | pub struct PackageData { | 77 | pub struct PackageData { |
diff --git a/crates/ra_project_model/src/sysroot.rs b/crates/ra_project_model/src/sysroot.rs index 4ac4fa14d..55ff5ad80 100644 --- a/crates/ra_project_model/src/sysroot.rs +++ b/crates/ra_project_model/src/sysroot.rs | |||
@@ -7,16 +7,14 @@ use std::{ | |||
7 | process::{Command, Output}, | 7 | process::{Command, Output}, |
8 | }; | 8 | }; |
9 | 9 | ||
10 | use ra_arena::{impl_arena_id, Arena, RawId}; | 10 | use ra_arena::{Arena, Idx}; |
11 | 11 | ||
12 | #[derive(Default, Debug, Clone)] | 12 | #[derive(Default, Debug, Clone)] |
13 | pub struct Sysroot { | 13 | pub struct Sysroot { |
14 | crates: Arena<SysrootCrate, SysrootCrateData>, | 14 | crates: Arena<SysrootCrateData>, |
15 | } | 15 | } |
16 | 16 | ||
17 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] | 17 | pub type SysrootCrate = Idx<SysrootCrateData>; |
18 | pub struct SysrootCrate(RawId); | ||
19 | impl_arena_id!(SysrootCrate); | ||
20 | 18 | ||
21 | #[derive(Debug, Clone)] | 19 | #[derive(Debug, Clone)] |
22 | pub struct SysrootCrateData { | 20 | pub struct SysrootCrateData { |