We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent b919797 commit 98e9d16Copy full SHA for 98e9d16
compiler/rustc_middle/src/ty/list.rs
@@ -63,17 +63,17 @@ impl<T: Copy> List<T> {
63
64
let (layout, _offset) =
65
Layout::new::<usize>().extend(Layout::for_value::<[T]>(slice)).unwrap();
66
- let mem = arena.dropless.alloc_raw(layout);
+ let mem = arena.dropless.alloc_raw(layout) as *mut List<T>;
67
unsafe {
68
- let result = &mut *(mem as *mut List<T>);
69
// Write the length
70
- result.len = slice.len();
+ ptr::addr_of_mut!((*mem).len).write(slice.len());
71
72
// Write the elements
73
- let arena_slice = slice::from_raw_parts_mut(result.data.as_mut_ptr(), result.len);
74
- arena_slice.copy_from_slice(slice);
+ ptr::addr_of_mut!((*mem).data)
+ .cast::<T>()
+ .copy_from_nonoverlapping(slice.as_ptr(), slice.len());
75
76
- result
+ &mut *mem
77
}
78
79
0 commit comments