|  | use std::ptr; | 
|  |  | 
|  | const IS_NULL: () = { | 
|  | assert!(ptr::null::<u8>().is_null()); | 
|  | }; | 
|  | const IS_NOT_NULL: () = { | 
|  | assert!(!ptr::null::<u8>().wrapping_add(1).is_null()); | 
|  | }; | 
|  |  | 
|  | const MAYBE_NULL: () = { | 
|  | let x = 15; | 
|  | let ptr = &x as *const i32; | 
|  | // This one is still unambiguous... | 
|  | assert!(!ptr.is_null()); | 
|  | // and in fact, any offset not visible by 4 (the alignment) cannot be null, | 
|  | // even if it goes out-of-bounds... | 
|  | assert!(!ptr.wrapping_byte_add(13).is_null()); | 
|  | assert!(!ptr.wrapping_byte_add(18).is_null()); | 
|  | assert!(!ptr.wrapping_byte_sub(1).is_null()); | 
|  | // ... but once we shift outside the allocation, with an offset divisible by 4, | 
|  | // we might become null. | 
|  | assert!(!ptr.wrapping_sub(512).is_null()); //~ ERROR null-ness of this pointer cannot be determined | 
|  | }; | 
|  |  | 
|  | fn main() {} |