@@ -894,34 +894,23 @@ impl<'tcx> OwnerInfo<'tcx> {
894
894
}
895
895
896
896
#[ derive( Copy , Clone , Debug , HashStable_Generic ) ]
897
- pub enum MaybeOwner < T > {
898
- Owner ( T ) ,
897
+ pub enum MaybeOwner < ' tcx > {
898
+ Owner ( & ' tcx OwnerInfo < ' tcx > ) ,
899
899
NonOwner ( HirId ) ,
900
900
/// Used as a placeholder for unused LocalDefId.
901
901
Phantom ,
902
902
}
903
903
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 > > {
906
906
match self {
907
907
MaybeOwner :: Owner ( i) => Some ( i) ,
908
908
MaybeOwner :: NonOwner ( _) | MaybeOwner :: Phantom => None ,
909
909
}
910
910
}
911
911
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" ) )
925
914
}
926
915
}
927
916
@@ -933,7 +922,7 @@ impl<T> MaybeOwner<T> {
933
922
/// [rustc dev guide]: https://rustc-dev-guide.rust-lang.org/hir.html
934
923
#[ derive( Debug ) ]
935
924
pub struct Crate < ' hir > {
936
- pub owners : IndexVec < LocalDefId , MaybeOwner < & ' hir OwnerInfo < ' hir > > > ,
925
+ pub owners : IndexVec < LocalDefId , MaybeOwner < ' hir > > ,
937
926
// Only present when incr. comp. is enabled.
938
927
pub opt_hir_hash : Option < Fingerprint > ,
939
928
}
0 commit comments