@@ -43,7 +43,7 @@ impl fmt::Debug for ProjectWorkspace {
4343 f. debug_struct ( "Cargo" ) . field ( "n_packages" , & cargo. packages ( ) . len ( ) ) . finish ( )
4444 }
4545 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 ( )
4747 }
4848 }
4949 }
@@ -202,9 +202,8 @@ impl ProjectWorkspace {
202202 pub fn to_roots ( & self ) -> Vec < PackageRoot > {
203203 match self {
204204 ProjectWorkspace :: Json { project } => project
205- . crates
206- . iter ( )
207- . map ( |krate| PackageRoot {
205+ . crates ( )
206+ . map ( |( _, krate) | PackageRoot {
208207 is_member : krate. is_workspace_member ,
209208 include : krate. include . clone ( ) ,
210209 exclude : krate. exclude . clone ( ) ,
@@ -243,9 +242,8 @@ impl ProjectWorkspace {
243242 pub fn proc_macro_dylib_paths ( & self ) -> Vec < AbsPathBuf > {
244243 match self {
245244 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 ( ) )
249247 . cloned ( )
250248 . collect ( ) ,
251249 ProjectWorkspace :: Cargo { cargo, sysroot : _sysroot } => cargo
@@ -258,7 +256,7 @@ impl ProjectWorkspace {
258256
259257 pub fn n_packages ( & self ) -> usize {
260258 match self {
261- ProjectWorkspace :: Json { project, .. } => project. crates . len ( ) ,
259+ ProjectWorkspace :: Json { project, .. } => project. n_crates ( ) ,
262260 ProjectWorkspace :: Cargo { cargo, sysroot } => {
263261 cargo. packages ( ) . len ( ) + sysroot. crates ( ) . len ( )
264262 }
@@ -276,10 +274,8 @@ impl ProjectWorkspace {
276274 ProjectWorkspace :: Json { project } => {
277275 let mut cfg_cache: FxHashMap < Option < & str > , Vec < CfgFlag > > = FxHashMap :: default ( ) ;
278276 let crates: FxHashMap < _ , _ > = project
279- . crates
280- . iter ( )
281- . enumerate ( )
282- . filter_map ( |( seq_index, krate) | {
277+ . crates ( )
278+ . filter_map ( |( crate_id, krate) | {
283279 let file_path = & krate. root_module ;
284280 let file_id = load ( & file_path) ?;
285281
@@ -297,9 +293,8 @@ impl ProjectWorkspace {
297293 let mut cfg_options = CfgOptions :: default ( ) ;
298294 cfg_options. extend ( target_cfgs. iter ( ) . chain ( krate. cfg . iter ( ) ) . cloned ( ) ) ;
299295
300- // FIXME: No crate name in json definition such that we cannot add OUT_DIR to env
301296 Some ( (
302- CrateId ( seq_index as u32 ) ,
297+ crate_id ,
303298 crate_graph. add_crate_root (
304299 file_id,
305300 krate. edition ,
@@ -313,19 +308,14 @@ impl ProjectWorkspace {
313308 } )
314309 . collect ( ) ;
315310
316- for ( id , krate) in project. crates . iter ( ) . enumerate ( ) {
311+ for ( from , krate) in project. crates ( ) {
317312 for dep in & krate. deps {
318- let from_crate_id = CrateId ( id as u32 ) ;
319313 let to_crate_id = dep. crate_id ;
320314 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) )
322316 {
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) ;
329319 }
330320 }
331321 }
0 commit comments