@@ -30,8 +30,11 @@ use core::{
3030use crate :: {
3131 pointer:: {
3232 cast:: { CastSized , IdCast } ,
33- invariant:: { self , BecauseExclusive , BecauseImmutable , Invariants } ,
34- BecauseInvariantsEq , Read , TryTransmuteFromPtr ,
33+ invariant:: {
34+ Aligned , BecauseExclusive , BecauseImmutable , Initialized , Invariants , Read , Reference ,
35+ Unaligned , Valid ,
36+ } ,
37+ BecauseInvariantsEq , TryTransmuteFromPtr ,
3538 } ,
3639 FromBytes , Immutable , IntoBytes , KnownLayout , Ptr , ReadOnly , TryFromBytes , ValidityError ,
3740} ;
@@ -626,20 +629,17 @@ pub const fn hash_name(name: &str) -> i128 {
626629#[ inline]
627630fn try_cast_or_pme < Src , Dst , I , R , S > (
628631 src : Ptr < ' _ , Src , I > ,
629- ) -> Result <
630- Ptr < ' _ , Dst , ( I :: Aliasing , invariant:: Unaligned , invariant:: Valid ) > ,
631- ValidityError < Ptr < ' _ , Src , I > , Dst > ,
632- >
632+ ) -> Result < Ptr < ' _ , Dst , ( I :: Aliasing , Unaligned , Valid ) > , ValidityError < Ptr < ' _ , Src , I > , Dst > >
633633where
634634 // FIXME(#2226): There should be a `Src: FromBytes` bound here, but doing so
635635 // requires deeper surgery.
636- Src : invariant :: Read < I :: Aliasing , R > ,
636+ Src : Read < I :: Aliasing , R > ,
637637 Dst : TryFromBytes
638- + invariant :: Read < I :: Aliasing , R >
639- + TryTransmuteFromPtr < Dst , I :: Aliasing , invariant :: Initialized , invariant :: Valid , IdCast , S > ,
638+ + Read < I :: Aliasing , R >
639+ + TryTransmuteFromPtr < Dst , I :: Aliasing , Initialized , Valid , IdCast , S > ,
640640 ReadOnly < Dst > : Read < I :: Aliasing , R > ,
641- I : Invariants < Validity = invariant :: Initialized > ,
642- I :: Aliasing : invariant :: Reference ,
641+ I : Invariants < Validity = Initialized > ,
642+ I :: Aliasing : Reference ,
643643{
644644 let c_ptr = src. cast :: < _ , CastSized , _ > ( ) ;
645645 match c_ptr. try_into_valid ( ) {
@@ -691,7 +691,7 @@ where
691691 // SAFETY: Since `Src: IntoBytes`, and since `size_of::<Src>() ==
692692 // size_of::<Dst>()` by the preceding assertion, all of `mu_dst`'s bytes are
693693 // initialized.
694- let ptr = unsafe { ptr. assume_validity :: < invariant :: Initialized > ( ) } ;
694+ let ptr = unsafe { ptr. assume_validity :: < Initialized > ( ) } ;
695695
696696 let ptr: Ptr < ' _ , ReadOnly < Dst > , _ > = ptr. cast :: < _ , crate :: pointer:: cast:: CastSized , _ > ( ) ;
697697
@@ -726,13 +726,13 @@ where
726726 Dst : TryFromBytes + Immutable ,
727727{
728728 let ptr = Ptr :: from_ref ( src) ;
729- let ptr = ptr. recall_validity :: < invariant :: Initialized , _ > ( ) ;
729+ let ptr = ptr. recall_validity :: < Initialized , _ > ( ) ;
730730 match try_cast_or_pme :: < Src , Dst , _ , BecauseImmutable , _ > ( ptr) {
731731 Ok ( ptr) => {
732732 static_assert ! ( Src , Dst => mem:: align_of:: <Dst >( ) <= mem:: align_of:: <Src >( ) ) ;
733733 // SAFETY: We have checked that `Dst` does not have a stricter
734734 // alignment requirement than `Src`.
735- let ptr = unsafe { ptr. assume_alignment :: < invariant :: Aligned > ( ) } ;
735+ let ptr = unsafe { ptr. assume_alignment :: < Aligned > ( ) } ;
736736 Ok ( ptr. as_ref ( ) )
737737 }
738738 Err ( err) => Err ( err. map_src ( |ptr| {
@@ -770,13 +770,13 @@ where
770770 Dst : TryFromBytes + IntoBytes ,
771771{
772772 let ptr = Ptr :: from_mut ( src) ;
773- let ptr = ptr. recall_validity :: < invariant :: Initialized , ( _ , ( _ , _ ) ) > ( ) ;
773+ let ptr = ptr. recall_validity :: < Initialized , ( _ , ( _ , _ ) ) > ( ) ;
774774 match try_cast_or_pme :: < Src , Dst , _ , BecauseExclusive , _ > ( ptr) {
775775 Ok ( ptr) => {
776776 static_assert ! ( Src , Dst => mem:: align_of:: <Dst >( ) <= mem:: align_of:: <Src >( ) ) ;
777777 // SAFETY: We have checked that `Dst` does not have a stricter
778778 // alignment requirement than `Src`.
779- let ptr = unsafe { ptr. assume_alignment :: < invariant :: Aligned > ( ) } ;
779+ let ptr = unsafe { ptr. assume_alignment :: < Aligned > ( ) } ;
780780 Ok ( ptr. as_mut ( ) )
781781 }
782782 Err ( err) => {
@@ -900,9 +900,9 @@ where
900900 } , "cannot transmute reference when destination type has higher alignment than source type" ) ;
901901
902902 let ptr = Ptr :: from_ref ( self . 0 )
903- . recall_validity :: < invariant :: Initialized , _ > ( )
904- . transmute_with :: < Dst , invariant :: Initialized , crate :: layout:: CastFrom < Dst > , ( crate :: pointer:: BecauseMutationCompatible , _ ) > ( )
905- . recall_validity :: < invariant :: Valid , _ > ( ) ;
903+ . recall_validity :: < Initialized , _ > ( )
904+ . transmute_with :: < Dst , Initialized , crate :: layout:: CastFrom < Dst > , ( crate :: pointer:: BecauseMutationCompatible , _ ) > ( )
905+ . recall_validity :: < Valid , _ > ( ) ;
906906
907907 // SAFETY: The preceding `static_assert!` ensures that
908908 // `Src::LAYOUT.align >= Dst::LAYOUT.align`. Since `self` is
@@ -933,9 +933,9 @@ where
933933 } , "cannot transmute reference when destination type has higher alignment than source type" ) ;
934934
935935 let ptr = Ptr :: from_mut ( self . 0 )
936- . recall_validity :: < invariant :: Initialized , ( _ , ( _ , _ ) ) > ( )
937- . transmute_with :: < Dst , invariant :: Initialized , crate :: layout:: CastFrom < Dst > , _ > ( )
938- . recall_validity :: < invariant :: Valid , ( _ , ( _ , _ ) ) > ( ) ;
936+ . recall_validity :: < Initialized , ( _ , ( _ , _ ) ) > ( )
937+ . transmute_with :: < Dst , Initialized , crate :: layout:: CastFrom < Dst > , _ > ( )
938+ . recall_validity :: < Valid , ( _ , ( _ , _ ) ) > ( ) ;
939939
940940 #[ allow( unused_unsafe) ]
941941 // SAFETY: The preceding `static_assert!` ensures that
0 commit comments