Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/test-utils/src/minicore.rs')
| -rw-r--r-- | crates/test-utils/src/minicore.rs | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/crates/test-utils/src/minicore.rs b/crates/test-utils/src/minicore.rs index 22cef04983..6d6c9af7f0 100644 --- a/crates/test-utils/src/minicore.rs +++ b/crates/test-utils/src/minicore.rs @@ -111,6 +111,7 @@ pub mod marker { impl<T: ?Sized> Copy for *const T {} impl<T: ?Sized> Copy for *mut T {} impl<T: ?Sized> Copy for &T {} + impl Copy for ! {} } // endregion:copy @@ -246,6 +247,12 @@ pub mod clone { f32 f64 bool char } + + impl Clone for ! { + fn clone(&self) { + *self + } + } // endregion:builtin_impls // region:derive @@ -319,8 +326,8 @@ pub mod mem { pub fn drop<T>(_x: T) {} pub const fn replace<T>(dest: &mut T, src: T) -> T { unsafe { - let result = *dest; - *dest = src; + let result = crate::ptr::read(dest); + crate::ptr::write(dest, src); result } } @@ -339,6 +346,12 @@ pub mod ptr { pub unsafe fn drop_in_place<T: ?Sized>(to_drop: *mut T) { unsafe { drop_in_place(to_drop) } } + pub const unsafe fn read<T>(src: *const T) -> T { + *src + } + pub const unsafe fn write<T>(dst: *mut T, src: T) { + *dst = src; + } // endregion:drop } |