Э
Size: a a a
Э
В
Э
V
IB
В
Э
fn realloc(&mut self, additional_bytes_over_current_capacity: usize) {
let mut new_v: Vec<usize> = Vec::with_capacity(
self.v.capacity() + additional_bytes_over_current_capacity / size_of::<usize>()
+ (additional_bytes_over_current_capacity % size_of::<usize>() != 0) as usize
);
unsafe {
ptr::copy_nonoverlapping(self.v.as_ptr() as *const u8, new_v.as_mut_ptr() as *mut u8, self.usizes * size_of::<usize>() + self.bytes_len);
}
self.v = new_v;
}В
let base = Layout::new::<usize>();
let (with_usizes, offset0) = base.extend(Layout::array::<usize>(usizes).unwrap()).unwrap();
let (full, offset1) = with_usizes.extend(Layout::array::<u8>(bytes).unwrap()).unwrap();В
fn realloc(&mut self, additional_bytes_over_current_capacity: usize) {
let mut new_v: Vec<usize> = Vec::with_capacity(
self.v.capacity() + additional_bytes_over_current_capacity / size_of::<usize>()
+ (additional_bytes_over_current_capacity % size_of::<usize>() != 0) as usize
);
unsafe {
ptr::copy_nonoverlapping(self.v.as_ptr() as *const u8, new_v.as_mut_ptr() as *mut u8, self.usizes * size_of::<usize>() + self.bytes_len);
}
self.v = new_v;
}Vec по многим причинам не подходит. Я специально пытаюсь в Unsized тип чтобы его можно было и в Box и в Rc и в Arc завернутьЭ
Vec по многим причинам не подходит. Я специально пытаюсь в Unsized тип чтобы его можно было и в Box и в Rc и в Arc завернутьВ
Э
В
Э
Layout::new::<[AtomicUsize; 2]>().extend(&unsized_struct).Э
В
Э
Э
Э
В
impl<T: ?Sized> From<Box<T>> for Arc<T>