@@ -384,7 +384,7 @@ use core::{
384384#[ cfg( feature = "std" ) ]
385385use std:: io;
386386
387- use crate :: pointer:: invariant :: { self , BecauseExclusive } ;
387+ use crate :: pointer:: { invariant , BecauseBidirectional } ;
388388
389389#[ cfg( any( feature = "alloc" , test, kani) ) ]
390390extern crate alloc;
@@ -1843,7 +1843,7 @@ pub unsafe trait TryFromBytes {
18431843 Self : KnownLayout + IntoBytes ,
18441844 {
18451845 static_assert_dst_is_not_zst ! ( Self ) ;
1846- match Ptr :: from_mut ( bytes) . try_cast_into_no_leftover :: < Self , BecauseExclusive > ( None ) {
1846+ match Ptr :: from_mut ( bytes) . try_cast_into_no_leftover ( None ) {
18471847 Ok ( source) => {
18481848 // This call may panic. If that happens, it doesn't cause any soundness
18491849 // issues, as we have not generated any invalid state which we need to
@@ -1855,9 +1855,7 @@ pub unsafe trait TryFromBytes {
18551855 // condition will not happen.
18561856 match source. try_into_valid ( ) {
18571857 Ok ( source) => Ok ( source. as_mut ( ) ) ,
1858- Err ( e) => {
1859- Err ( e. map_src ( |src| src. as_bytes :: < BecauseExclusive > ( ) . as_mut ( ) ) . into ( ) )
1860- }
1858+ Err ( e) => Err ( e. map_src ( |src| src. as_bytes ( ) . as_mut ( ) ) . into ( ) ) ,
18611859 }
18621860 }
18631861 Err ( e) => Err ( e. map_src ( Ptr :: as_mut) . into ( ) ) ,
@@ -2424,8 +2422,7 @@ pub unsafe trait TryFromBytes {
24242422 where
24252423 Self : KnownLayout < PointerMetadata = usize > + IntoBytes ,
24262424 {
2427- match Ptr :: from_mut ( source) . try_cast_into_no_leftover :: < Self , BecauseExclusive > ( Some ( count) )
2428- {
2425+ match Ptr :: from_mut ( source) . try_cast_into_no_leftover ( Some ( count) ) {
24292426 Ok ( source) => {
24302427 // This call may panic. If that happens, it doesn't cause any soundness
24312428 // issues, as we have not generated any invalid state which we need to
@@ -2437,9 +2434,7 @@ pub unsafe trait TryFromBytes {
24372434 // condition will not happen.
24382435 match source. try_into_valid ( ) {
24392436 Ok ( source) => Ok ( source. as_mut ( ) ) ,
2440- Err ( e) => {
2441- Err ( e. map_src ( |src| src. as_bytes :: < BecauseExclusive > ( ) . as_mut ( ) ) . into ( ) )
2442- }
2437+ Err ( e) => Err ( e. map_src ( |src| src. as_bytes ( ) . as_mut ( ) ) . into ( ) ) ,
24432438 }
24442439 }
24452440 Err ( e) => Err ( e. map_src ( Ptr :: as_mut) . into ( ) ) ,
@@ -2847,7 +2842,7 @@ fn try_mut_from_prefix_suffix<T: IntoBytes + TryFromBytes + KnownLayout + ?Sized
28472842 cast_type : CastType ,
28482843 meta : Option < T :: PointerMetadata > ,
28492844) -> Result < ( & mut T , & mut [ u8 ] ) , TryCastError < & mut [ u8 ] , T > > {
2850- match Ptr :: from_mut ( candidate) . try_cast_into :: < T , BecauseExclusive > ( cast_type, meta) {
2845+ match Ptr :: from_mut ( candidate) . try_cast_into ( cast_type, meta) {
28512846 Ok ( ( candidate, prefix_suffix) ) => {
28522847 // This call may panic. If that happens, it doesn't cause any soundness
28532848 // issues, as we have not generated any invalid state which we need to
@@ -2859,7 +2854,7 @@ fn try_mut_from_prefix_suffix<T: IntoBytes + TryFromBytes + KnownLayout + ?Sized
28592854 // condition will not happen.
28602855 match candidate. try_into_valid ( ) {
28612856 Ok ( valid) => Ok ( ( valid. as_mut ( ) , prefix_suffix. as_mut ( ) ) ) ,
2862- Err ( e) => Err ( e. map_src ( |src| src. as_bytes :: < BecauseExclusive > ( ) . as_mut ( ) ) . into ( ) ) ,
2857+ Err ( e) => Err ( e. map_src ( |src| src. as_bytes ( ) . as_mut ( ) ) . into ( ) ) ,
28632858 }
28642859 }
28652860 Err ( e) => Err ( e. map_src ( Ptr :: as_mut) . into ( ) ) ,
@@ -3838,8 +3833,8 @@ pub unsafe trait FromBytes: FromZeros {
38383833 Self : IntoBytes + KnownLayout ,
38393834 {
38403835 static_assert_dst_is_not_zst ! ( Self ) ;
3841- match Ptr :: from_mut ( source) . try_cast_into_no_leftover :: < _ , BecauseExclusive > ( None ) {
3842- Ok ( ptr) => Ok ( ptr. recall_validity :: < _ , ( _ , ( _ , _ ) ) > ( ) . as_mut ( ) ) ,
3836+ match Ptr :: from_mut ( source) . try_cast_into_no_leftover ( None ) {
3837+ Ok ( ptr) => Ok ( ptr. recall_validity :: < _ , BecauseBidirectional > ( ) . as_mut ( ) ) ,
38433838 Err ( err) => Err ( err. map_src ( |src| src. as_mut ( ) ) ) ,
38443839 }
38453840 }
@@ -4307,11 +4302,9 @@ pub unsafe trait FromBytes: FromZeros {
43074302 Self : IntoBytes + KnownLayout < PointerMetadata = usize > + Immutable ,
43084303 {
43094304 let source = Ptr :: from_mut ( source) ;
4310- let maybe_slf = source. try_cast_into_no_leftover :: < _ , BecauseImmutable > ( Some ( count) ) ;
4305+ let maybe_slf = source. try_cast_into_no_leftover ( Some ( count) ) ;
43114306 match maybe_slf {
4312- Ok ( slf) => Ok ( slf
4313- . recall_validity :: < _ , ( _ , ( _ , ( BecauseExclusive , BecauseExclusive ) ) ) > ( )
4314- . as_mut ( ) ) ,
4307+ Ok ( slf) => Ok ( slf. recall_validity :: < _ , BecauseBidirectional > ( ) . as_mut ( ) ) ,
43154308 Err ( err) => Err ( err. map_src ( |s| s. as_mut ( ) ) ) ,
43164309 }
43174310 }
@@ -4668,7 +4661,7 @@ pub unsafe trait FromBytes: FromZeros {
46684661 // cannot be violated even though `buf` may have more permissive bit
46694662 // validity than `ptr`.
46704663 let ptr = unsafe { ptr. assume_validity :: < invariant:: Initialized > ( ) } ;
4671- let ptr = ptr. as_bytes :: < BecauseExclusive > ( ) ;
4664+ let ptr = ptr. as_bytes ( ) ;
46724665 src. read_exact ( ptr. as_mut ( ) ) ?;
46734666 // SAFETY: `buf` entirely consists of initialized bytes, and `Self` is
46744667 // `FromBytes`.
@@ -4787,9 +4780,9 @@ fn mut_from_prefix_suffix<T: FromBytes + IntoBytes + KnownLayout + ?Sized>(
47874780 cast_type : CastType ,
47884781) -> Result < ( & mut T , & mut [ u8 ] ) , CastError < & mut [ u8 ] , T > > {
47894782 let ( slf, prefix_suffix) = Ptr :: from_mut ( source)
4790- . try_cast_into :: < _ , BecauseExclusive > ( cast_type, meta)
4783+ . try_cast_into ( cast_type, meta)
47914784 . map_err ( |err| err. map_src ( |s| s. as_mut ( ) ) ) ?;
4792- Ok ( ( slf. recall_validity :: < _ , ( _ , ( _ , _ ) ) > ( ) . as_mut ( ) , prefix_suffix. as_mut ( ) ) )
4785+ Ok ( ( slf. recall_validity :: < _ , BecauseBidirectional > ( ) . as_mut ( ) , prefix_suffix. as_mut ( ) ) )
47934786}
47944787
47954788/// Analyzes whether a type is [`IntoBytes`].
0 commit comments