Make (*mut T)::write_bytes const

This commit is contained in:
woppopo 2021-12-12 14:02:53 +09:00
parent e70e4d499d
commit 7f5dc0f609
2 changed files with 17 additions and 1 deletions
library/core
src/ptr
tests

View file

@ -1069,8 +1069,9 @@ impl<T: ?Sized> *mut T {
///
/// [`ptr::write_bytes`]: crate::ptr::write_bytes()
#[stable(feature = "pointer_methods", since = "1.26.0")]
#[rustc_const_unstable(feature = "const_ptr_write", issue = "86302")]
#[inline(always)]
pub unsafe fn write_bytes(self, val: u8, count: usize)
pub const unsafe fn write_bytes(self, val: u8, count: usize)
where
T: Sized,
{

View file

@ -250,6 +250,21 @@ fn test_set_memory() {
assert!(xs == [5u8; 20]);
}
#[test]
#[cfg(not(bootstrap))]
fn test_set_memory_const() {
const XS: [u8; 20] = {
let mut xs = [0u8; 20];
let ptr = xs.as_mut_ptr();
unsafe {
ptr.write_bytes(5u8, xs.len());
}
xs
};
assert!(XS == [5u8; 20]);
}
#[test]
fn test_unsized_nonnull() {
let xs: &[i32] = &[1, 2, 3];