]> git.lizzy.rs Git - rust.git/blobdiff - library/core/src/ptr/non_null.rs
Rollup merge of #103035 - saethlin:assert_unsafe_precondition3, r=thomcc
[rust.git] / library / core / src / ptr / non_null.rs
index f3ef094cbccc5ea191ef838d9d8e9987e980ebc3..c18264d13ebac78993f8cbc9ab9090ed521fe0be 100644 (file)
@@ -2,6 +2,7 @@
 use crate::convert::From;
 use crate::fmt;
 use crate::hash;
+use crate::intrinsics::assert_unsafe_precondition;
 use crate::marker::Unsize;
 use crate::mem::{self, MaybeUninit};
 use crate::num::NonZeroUsize;
@@ -195,7 +196,10 @@ impl<T: ?Sized> NonNull<T> {
     #[inline]
     pub const unsafe fn new_unchecked(ptr: *mut T) -> Self {
         // SAFETY: the caller must guarantee that `ptr` is non-null.
-        unsafe { NonNull { pointer: ptr as _ } }
+        unsafe {
+            assert_unsafe_precondition!("NonNull::new_unchecked requires that the pointer is non-null", [T: ?Sized](ptr: *mut T) => !ptr.is_null());
+            NonNull { pointer: ptr as _ }
+        }
     }
 
     /// Creates a new `NonNull` if `ptr` is non-null.