@@ -396,6 +396,23 @@ impl PartialEq<ModuleId> for CrateRootModuleId {
396396 other. block . is_none ( ) && other. local_id == DefMap :: ROOT && self . krate == other. krate
397397 }
398398}
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+ }
399416
400417impl From < CrateId > for CrateRootModuleId {
401418 fn from ( krate : CrateId ) -> Self {
@@ -472,6 +489,7 @@ impl ModuleId {
472489 self . block . is_some ( )
473490 }
474491
492+ /// Returns the [`CrateRootModuleId`] for this module if it is the crate root module.
475493 pub fn as_crate_root ( & self ) -> Option < CrateRootModuleId > {
476494 if self . local_id == DefMap :: ROOT && self . block . is_none ( ) {
477495 Some ( CrateRootModuleId { krate : self . krate } )
@@ -480,33 +498,17 @@ impl ModuleId {
480498 }
481499 }
482500
501+ /// Returns the [`CrateRootModuleId`] for this module.
483502 pub fn derive_crate_root ( & self ) -> CrateRootModuleId {
484503 CrateRootModuleId { krate : self . krate }
485504 }
486505
506+ /// Whether this module represents the crate root module
487507 fn is_crate_root ( & self ) -> bool {
488508 self . local_id == DefMap :: ROOT && self . block . is_none ( )
489509 }
490510}
491511
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-
510512/// An ID of a module, **local** to a `DefMap`.
511513pub type LocalModuleId = Idx < nameres:: ModuleData > ;
512514
0 commit comments