Skip to content

Commit 67a15fe

Browse files
committed
Implement Default for raw pointers
1 parent 1de9312 commit 67a15fe

File tree

3 files changed

+33
-0
lines changed

3 files changed

+33
-0
lines changed

Diff for: library/core/src/ptr/const_ptr.rs

+8
Original file line numberDiff line numberDiff line change
@@ -1739,3 +1739,11 @@ impl<T: ?Sized> PartialOrd for *const T {
17391739
*self >= *other
17401740
}
17411741
}
1742+
1743+
#[stable(feature = "raw_ptr_default", since = "CURRENT_RUSTC_VERSION")]
1744+
impl<T: ?Sized + Thin> Default for *const T {
1745+
/// Returns the default value of [`null()`][crate::ptr::null].
1746+
fn default() -> Self {
1747+
crate::ptr::null()
1748+
}
1749+
}

Diff for: library/core/src/ptr/mut_ptr.rs

+8
Original file line numberDiff line numberDiff line change
@@ -2156,3 +2156,11 @@ impl<T: ?Sized> PartialOrd for *mut T {
21562156
*self >= *other
21572157
}
21582158
}
2159+
2160+
#[stable(feature = "raw_ptr_default", since = "CURRENT_RUSTC_VERSION")]
2161+
impl<T: ?Sized + Thin> Default for *mut T {
2162+
/// Returns the default value of [`null_mut()`][crate::ptr::null_mut].
2163+
fn default() -> Self {
2164+
crate::ptr::null_mut()
2165+
}
2166+
}

Diff for: library/coretests/tests/ptr.rs

+17
Original file line numberDiff line numberDiff line change
@@ -984,3 +984,20 @@ fn test_ptr_metadata_in_const() {
984984
assert_eq!(SLICE_META, 3);
985985
assert_eq!(DYN_META.size_of(), 42);
986986
}
987+
988+
#[test]
989+
fn test_ptr_default() {
990+
#[derive(Default)]
991+
struct PtrDefaultTest {
992+
ptr: *const u64,
993+
}
994+
let default = PtrDefaultTest::default();
995+
assert!(default.ptr.is_null());
996+
997+
#[derive(Default)]
998+
struct PtrMutDefaultTest {
999+
ptr: *mut u64,
1000+
}
1001+
let default = PtrMutDefaultTest::default();
1002+
assert!(default.ptr.is_null());
1003+
}

0 commit comments

Comments
 (0)