@@ -894,34 +894,23 @@ impl<'tcx> OwnerInfo<'tcx> {
894894}
895895
896896#[ derive( Copy , Clone , Debug , HashStable_Generic ) ]
897- pub enum MaybeOwner < T > {
898- Owner ( T ) ,
897+ pub enum MaybeOwner < ' tcx > {
898+ Owner ( & ' tcx OwnerInfo < ' tcx > ) ,
899899 NonOwner ( HirId ) ,
900900 /// Used as a placeholder for unused LocalDefId.
901901 Phantom ,
902902}
903903
904- impl < T > MaybeOwner < T > {
905- pub fn as_owner ( self ) -> Option < T > {
904+ impl < ' tcx > MaybeOwner < ' tcx > {
905+ pub fn as_owner ( self ) -> Option < & ' tcx OwnerInfo < ' tcx > > {
906906 match self {
907907 MaybeOwner :: Owner ( i) => Some ( i) ,
908908 MaybeOwner :: NonOwner ( _) | MaybeOwner :: Phantom => None ,
909909 }
910910 }
911911
912- pub fn map < U > ( self , f : impl FnOnce ( T ) -> U ) -> MaybeOwner < U > {
913- match self {
914- MaybeOwner :: Owner ( i) => MaybeOwner :: Owner ( f ( i) ) ,
915- MaybeOwner :: NonOwner ( hir_id) => MaybeOwner :: NonOwner ( hir_id) ,
916- MaybeOwner :: Phantom => MaybeOwner :: Phantom ,
917- }
918- }
919-
920- pub fn unwrap ( self ) -> T {
921- match self {
922- MaybeOwner :: Owner ( i) => i,
923- MaybeOwner :: NonOwner ( _) | MaybeOwner :: Phantom => panic ! ( "Not a HIR owner" ) ,
924- }
912+ pub fn unwrap ( self ) -> & ' tcx OwnerInfo < ' tcx > {
913+ self . as_owner ( ) . unwrap_or_else ( || panic ! ( "Not a HIR owner" ) )
925914 }
926915}
927916
@@ -933,7 +922,7 @@ impl<T> MaybeOwner<T> {
933922/// [rustc dev guide]: https://rustc-dev-guide.rust-lang.org/hir.html
934923#[ derive( Debug ) ]
935924pub struct Crate < ' hir > {
936- pub owners : IndexVec < LocalDefId , MaybeOwner < & ' hir OwnerInfo < ' hir > > > ,
925+ pub owners : IndexVec < LocalDefId , MaybeOwner < ' hir > > ,
937926 // Only present when incr. comp. is enabled.
938927 pub opt_hir_hash : Option < Fingerprint > ,
939928}
0 commit comments