@@ -2,7 +2,7 @@ use std::path::{Path, PathBuf};
2
2
3
3
use cargo_metadata:: { metadata_run, CargoOpt } ;
4
4
use ra_syntax:: SmolStr ;
5
- use rustc_hash:: { FxHashMap , FxHashSet } ;
5
+ use rustc_hash:: FxHashMap ;
6
6
use failure:: { format_err, bail} ;
7
7
use thread_worker:: { WorkerHandle , Worker } ;
8
8
@@ -109,19 +109,15 @@ impl CargoWorkspace {
109
109
let mut packages = Vec :: new ( ) ;
110
110
let mut targets = Vec :: new ( ) ;
111
111
112
- let ws_members: FxHashSet < String > = meta
113
- . workspace_members
114
- . into_iter ( )
115
- . map ( |it| it. raw )
116
- . collect ( ) ;
112
+ let ws_members = & meta. workspace_members ;
117
113
118
114
for meta_pkg in meta. packages {
119
115
let pkg = Package ( packages. len ( ) ) ;
120
116
let is_member = ws_members. contains ( & meta_pkg. id ) ;
121
117
pkg_by_id. insert ( meta_pkg. id . clone ( ) , pkg) ;
122
118
let mut pkg_data = PackageData {
123
119
name : meta_pkg. name . into ( ) ,
124
- manifest : PathBuf :: from ( meta_pkg. manifest_path ) ,
120
+ manifest : meta_pkg. manifest_path . clone ( ) ,
125
121
targets : Vec :: new ( ) ,
126
122
is_member,
127
123
dependencies : Vec :: new ( ) ,
@@ -131,7 +127,7 @@ impl CargoWorkspace {
131
127
targets. push ( TargetData {
132
128
pkg,
133
129
name : meta_tgt. name . into ( ) ,
134
- root : PathBuf :: from ( meta_tgt. src_path ) ,
130
+ root : meta_tgt. src_path . clone ( ) ,
135
131
kind : TargetKind :: new ( meta_tgt. kind . as_slice ( ) ) ,
136
132
} ) ;
137
133
pkg_data. targets . push ( tgt) ;
@@ -141,10 +137,11 @@ impl CargoWorkspace {
141
137
let resolve = meta. resolve . expect ( "metadata executed with deps" ) ;
142
138
for node in resolve. nodes {
143
139
let source = pkg_by_id[ & node. id ] ;
144
- for id in node. dependencies {
145
- let target = pkg_by_id[ & id] ;
146
- let name: SmolStr = packages[ target. 0 ] . name . replace ( '-' , "_" ) . into ( ) ;
147
- let dep = PackageDependency { name, pkg : target } ;
140
+ for dep_node in node. deps {
141
+ let dep = PackageDependency {
142
+ name : dep_node. name . into ( ) ,
143
+ pkg : pkg_by_id[ & dep_node. pkg ] ,
144
+ } ;
148
145
packages[ source. 0 ] . dependencies . push ( dep) ;
149
146
}
150
147
}
0 commit comments