Reallocate a block to a different size class. Copy `elems_to_copy` elements from the old to the new block.
(
&mut self,
block: usize,
from_sclass: SizeClass,
to_sclass: SizeClass,
elems_to_copy: usize,
)
| 247 | /// |
| 248 | /// Copy `elems_to_copy` elements from the old to the new block. |
| 249 | fn realloc( |
| 250 | &mut self, |
| 251 | block: usize, |
| 252 | from_sclass: SizeClass, |
| 253 | to_sclass: SizeClass, |
| 254 | elems_to_copy: usize, |
| 255 | ) -> usize { |
| 256 | debug_assert!(elems_to_copy <= sclass_size(from_sclass)); |
| 257 | debug_assert!(elems_to_copy <= sclass_size(to_sclass)); |
| 258 | let new_block = self.alloc(to_sclass); |
| 259 | |
| 260 | if elems_to_copy > 0 { |
| 261 | let (old, new) = self.mut_slices(block, new_block); |
| 262 | (&mut new[0..elems_to_copy]).copy_from_slice(&old[0..elems_to_copy]); |
| 263 | } |
| 264 | |
| 265 | self.free(block, from_sclass); |
| 266 | new_block |
| 267 | } |
| 268 | } |
| 269 | |
| 270 | impl<T: EntityRef + ReservedValue> EntityList<T> { |
no test coverage detected