@@ -396,6 +396,23 @@ impl PartialEq<ModuleId> for CrateRootModuleId {
396
396
other. block . is_none ( ) && other. local_id == DefMap :: ROOT && self . krate == other. krate
397
397
}
398
398
}
399
+ impl PartialEq < CrateRootModuleId > for ModuleId {
400
+ fn eq ( & self , other : & CrateRootModuleId ) -> bool {
401
+ other == self
402
+ }
403
+ }
404
+
405
+ impl From < CrateRootModuleId > for ModuleId {
406
+ fn from ( CrateRootModuleId { krate } : CrateRootModuleId ) -> Self {
407
+ ModuleId { krate, block : None , local_id : DefMap :: ROOT }
408
+ }
409
+ }
410
+
411
+ impl From < CrateRootModuleId > for ModuleDefId {
412
+ fn from ( value : CrateRootModuleId ) -> Self {
413
+ ModuleDefId :: ModuleId ( value. into ( ) )
414
+ }
415
+ }
399
416
400
417
impl From < CrateId > for CrateRootModuleId {
401
418
fn from ( krate : CrateId ) -> Self {
@@ -472,6 +489,7 @@ impl ModuleId {
472
489
self . block . is_some ( )
473
490
}
474
491
492
+ /// Returns the [`CrateRootModuleId`] for this module if it is the crate root module.
475
493
pub fn as_crate_root ( & self ) -> Option < CrateRootModuleId > {
476
494
if self . local_id == DefMap :: ROOT && self . block . is_none ( ) {
477
495
Some ( CrateRootModuleId { krate : self . krate } )
@@ -480,33 +498,17 @@ impl ModuleId {
480
498
}
481
499
}
482
500
501
+ /// Returns the [`CrateRootModuleId`] for this module.
483
502
pub fn derive_crate_root ( & self ) -> CrateRootModuleId {
484
503
CrateRootModuleId { krate : self . krate }
485
504
}
486
505
506
+ /// Whether this module represents the crate root module
487
507
fn is_crate_root ( & self ) -> bool {
488
508
self . local_id == DefMap :: ROOT && self . block . is_none ( )
489
509
}
490
510
}
491
511
492
- impl PartialEq < CrateRootModuleId > for ModuleId {
493
- fn eq ( & self , other : & CrateRootModuleId ) -> bool {
494
- other == self
495
- }
496
- }
497
-
498
- impl From < CrateRootModuleId > for ModuleId {
499
- fn from ( CrateRootModuleId { krate } : CrateRootModuleId ) -> Self {
500
- ModuleId { krate, block : None , local_id : DefMap :: ROOT }
501
- }
502
- }
503
-
504
- impl From < CrateRootModuleId > for ModuleDefId {
505
- fn from ( value : CrateRootModuleId ) -> Self {
506
- ModuleDefId :: ModuleId ( value. into ( ) )
507
- }
508
- }
509
-
510
512
/// An ID of a module, **local** to a `DefMap`.
511
513
pub type LocalModuleId = Idx < nameres:: ModuleData > ;
512
514
0 commit comments