@@ -43,7 +43,7 @@ impl fmt::Debug for ProjectWorkspace {
43
43
f. debug_struct ( "Cargo" ) . field ( "n_packages" , & cargo. packages ( ) . len ( ) ) . finish ( )
44
44
}
45
45
ProjectWorkspace :: Json { project } => {
46
- f. debug_struct ( "Json" ) . field ( "n_crates" , & project. crates . len ( ) ) . finish ( )
46
+ f. debug_struct ( "Json" ) . field ( "n_crates" , & project. n_crates ( ) ) . finish ( )
47
47
}
48
48
}
49
49
}
@@ -202,9 +202,8 @@ impl ProjectWorkspace {
202
202
pub fn to_roots ( & self ) -> Vec < PackageRoot > {
203
203
match self {
204
204
ProjectWorkspace :: Json { project } => project
205
- . crates
206
- . iter ( )
207
- . map ( |krate| PackageRoot {
205
+ . crates ( )
206
+ . map ( |( _, krate) | PackageRoot {
208
207
is_member : krate. is_workspace_member ,
209
208
include : krate. include . clone ( ) ,
210
209
exclude : krate. exclude . clone ( ) ,
@@ -243,9 +242,8 @@ impl ProjectWorkspace {
243
242
pub fn proc_macro_dylib_paths ( & self ) -> Vec < AbsPathBuf > {
244
243
match self {
245
244
ProjectWorkspace :: Json { project } => project
246
- . crates
247
- . iter ( )
248
- . filter_map ( |krate| krate. proc_macro_dylib_path . as_ref ( ) )
245
+ . crates ( )
246
+ . filter_map ( |( _, krate) | krate. proc_macro_dylib_path . as_ref ( ) )
249
247
. cloned ( )
250
248
. collect ( ) ,
251
249
ProjectWorkspace :: Cargo { cargo, sysroot : _sysroot } => cargo
@@ -258,7 +256,7 @@ impl ProjectWorkspace {
258
256
259
257
pub fn n_packages ( & self ) -> usize {
260
258
match self {
261
- ProjectWorkspace :: Json { project, .. } => project. crates . len ( ) ,
259
+ ProjectWorkspace :: Json { project, .. } => project. n_crates ( ) ,
262
260
ProjectWorkspace :: Cargo { cargo, sysroot } => {
263
261
cargo. packages ( ) . len ( ) + sysroot. crates ( ) . len ( )
264
262
}
@@ -276,10 +274,8 @@ impl ProjectWorkspace {
276
274
ProjectWorkspace :: Json { project } => {
277
275
let mut cfg_cache: FxHashMap < Option < & str > , Vec < CfgFlag > > = FxHashMap :: default ( ) ;
278
276
let crates: FxHashMap < _ , _ > = project
279
- . crates
280
- . iter ( )
281
- . enumerate ( )
282
- . filter_map ( |( seq_index, krate) | {
277
+ . crates ( )
278
+ . filter_map ( |( crate_id, krate) | {
283
279
let file_path = & krate. root_module ;
284
280
let file_id = load ( & file_path) ?;
285
281
@@ -297,9 +293,8 @@ impl ProjectWorkspace {
297
293
let mut cfg_options = CfgOptions :: default ( ) ;
298
294
cfg_options. extend ( target_cfgs. iter ( ) . chain ( krate. cfg . iter ( ) ) . cloned ( ) ) ;
299
295
300
- // FIXME: No crate name in json definition such that we cannot add OUT_DIR to env
301
296
Some ( (
302
- CrateId ( seq_index as u32 ) ,
297
+ crate_id ,
303
298
crate_graph. add_crate_root (
304
299
file_id,
305
300
krate. edition ,
@@ -313,19 +308,14 @@ impl ProjectWorkspace {
313
308
} )
314
309
. collect ( ) ;
315
310
316
- for ( id , krate) in project. crates . iter ( ) . enumerate ( ) {
311
+ for ( from , krate) in project. crates ( ) {
317
312
for dep in & krate. deps {
318
- let from_crate_id = CrateId ( id as u32 ) ;
319
313
let to_crate_id = dep. crate_id ;
320
314
if let ( Some ( & from) , Some ( & to) ) =
321
- ( crates. get ( & from_crate_id ) , crates. get ( & to_crate_id) )
315
+ ( crates. get ( & from ) , crates. get ( & to_crate_id) )
322
316
{
323
- if crate_graph. add_dep ( from, dep. name . clone ( ) , to) . is_err ( ) {
324
- log:: error!(
325
- "cyclic dependency {:?} -> {:?}" ,
326
- from_crate_id,
327
- to_crate_id
328
- ) ;
317
+ if let Err ( _) = crate_graph. add_dep ( from, dep. name . clone ( ) , to) {
318
+ log:: error!( "cyclic dependency {:?} -> {:?}" , from, to_crate_id) ;
329
319
}
330
320
}
331
321
}
0 commit comments