@@ -384,7 +384,7 @@ use core::{
384
384
#[ cfg( feature = "std" ) ]
385
385
use std:: io;
386
386
387
- use crate :: pointer:: invariant :: { self , BecauseExclusive } ;
387
+ use crate :: pointer:: { invariant , BecauseBidirectional } ;
388
388
389
389
#[ cfg( any( feature = "alloc" , test, kani) ) ]
390
390
extern crate alloc;
@@ -1843,7 +1843,7 @@ pub unsafe trait TryFromBytes {
1843
1843
Self : KnownLayout + IntoBytes ,
1844
1844
{
1845
1845
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 ) {
1847
1847
Ok ( source) => {
1848
1848
// This call may panic. If that happens, it doesn't cause any soundness
1849
1849
// issues, as we have not generated any invalid state which we need to
@@ -1855,9 +1855,7 @@ pub unsafe trait TryFromBytes {
1855
1855
// condition will not happen.
1856
1856
match source. try_into_valid ( ) {
1857
1857
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 ( ) ) ,
1861
1859
}
1862
1860
}
1863
1861
Err ( e) => Err ( e. map_src ( Ptr :: as_mut) . into ( ) ) ,
@@ -2424,8 +2422,7 @@ pub unsafe trait TryFromBytes {
2424
2422
where
2425
2423
Self : KnownLayout < PointerMetadata = usize > + IntoBytes ,
2426
2424
{
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) ) {
2429
2426
Ok ( source) => {
2430
2427
// This call may panic. If that happens, it doesn't cause any soundness
2431
2428
// issues, as we have not generated any invalid state which we need to
@@ -2437,9 +2434,7 @@ pub unsafe trait TryFromBytes {
2437
2434
// condition will not happen.
2438
2435
match source. try_into_valid ( ) {
2439
2436
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 ( ) ) ,
2443
2438
}
2444
2439
}
2445
2440
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
2847
2842
cast_type : CastType ,
2848
2843
meta : Option < T :: PointerMetadata > ,
2849
2844
) -> 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) {
2851
2846
Ok ( ( candidate, prefix_suffix) ) => {
2852
2847
// This call may panic. If that happens, it doesn't cause any soundness
2853
2848
// 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
2859
2854
// condition will not happen.
2860
2855
match candidate. try_into_valid ( ) {
2861
2856
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 ( ) ) ,
2863
2858
}
2864
2859
}
2865
2860
Err ( e) => Err ( e. map_src ( Ptr :: as_mut) . into ( ) ) ,
@@ -3838,8 +3833,8 @@ pub unsafe trait FromBytes: FromZeros {
3838
3833
Self : IntoBytes + KnownLayout ,
3839
3834
{
3840
3835
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 ( ) ) ,
3843
3838
Err ( err) => Err ( err. map_src ( |src| src. as_mut ( ) ) ) ,
3844
3839
}
3845
3840
}
@@ -4307,11 +4302,9 @@ pub unsafe trait FromBytes: FromZeros {
4307
4302
Self : IntoBytes + KnownLayout < PointerMetadata = usize > + Immutable ,
4308
4303
{
4309
4304
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) ) ;
4311
4306
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 ( ) ) ,
4315
4308
Err ( err) => Err ( err. map_src ( |s| s. as_mut ( ) ) ) ,
4316
4309
}
4317
4310
}
@@ -4668,7 +4661,7 @@ pub unsafe trait FromBytes: FromZeros {
4668
4661
// cannot be violated even though `buf` may have more permissive bit
4669
4662
// validity than `ptr`.
4670
4663
let ptr = unsafe { ptr. assume_validity :: < invariant:: Initialized > ( ) } ;
4671
- let ptr = ptr. as_bytes :: < BecauseExclusive > ( ) ;
4664
+ let ptr = ptr. as_bytes ( ) ;
4672
4665
src. read_exact ( ptr. as_mut ( ) ) ?;
4673
4666
// SAFETY: `buf` entirely consists of initialized bytes, and `Self` is
4674
4667
// `FromBytes`.
@@ -4787,9 +4780,9 @@ fn mut_from_prefix_suffix<T: FromBytes + IntoBytes + KnownLayout + ?Sized>(
4787
4780
cast_type : CastType ,
4788
4781
) -> Result < ( & mut T , & mut [ u8 ] ) , CastError < & mut [ u8 ] , T > > {
4789
4782
let ( slf, prefix_suffix) = Ptr :: from_mut ( source)
4790
- . try_cast_into :: < _ , BecauseExclusive > ( cast_type, meta)
4783
+ . try_cast_into ( cast_type, meta)
4791
4784
. 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 ( ) ) )
4793
4786
}
4794
4787
4795
4788
/// Analyzes whether a type is [`IntoBytes`].
0 commit comments