File tree Expand file tree Collapse file tree 1 file changed +7
-2
lines changed Expand file tree Collapse file tree 1 file changed +7
-2
lines changed Original file line number Diff line number Diff line change @@ -452,6 +452,12 @@ where
452
452
#[ unstable( feature = "nonzero_from_mut" , issue = "106290" ) ]
453
453
#[ must_use]
454
454
#[ inline]
455
+ #[ requires( {
456
+ let size = core:: mem:: size_of:: <T >( ) ;
457
+ let ptr = & n as * const T as * const u8 ;
458
+ let slice = unsafe { core:: slice:: from_raw_parts( ptr, size) } ;
459
+ !slice. iter( ) . all( |& byte| byte == 0 )
460
+ } ) ]
455
461
pub unsafe fn from_mut_unchecked ( n : & mut T ) -> & mut Self {
456
462
match Self :: from_mut ( n) {
457
463
Some ( n) => n,
@@ -2425,10 +2431,9 @@ mod verify {
2425
2431
2426
2432
macro_rules! nonzero_check_from_mut_unchecked {
2427
2433
( $t: ty, $nonzero_type: ty, $harness_name: ident) => {
2428
- #[ kani:: proof ]
2434
+ #[ kani:: proof_for_contract ( NonZero :: from_mut_unchecked ) ]
2429
2435
pub fn $harness_name( ) {
2430
2436
let mut x: $t = kani:: any( ) ;
2431
- kani:: assume( x != 0 ) ;
2432
2437
unsafe {
2433
2438
<$nonzero_type>:: from_mut_unchecked( & mut x) ;
2434
2439
}
You can’t perform that action at this time.
0 commit comments