diff --git a/src/offset_table.rs b/src/offset_table.rs index 732420fa..2db36628 100644 --- a/src/offset_table.rs +++ b/src/offset_table.rs @@ -211,34 +211,36 @@ impl SerialOffsetTable { }) } - unsafe fn build_with(&mut self, value: T) -> usize { unsafe { - let mut ptr; + unsafe fn build_with(&mut self, value: T) -> usize { + unsafe { + let mut ptr; - loop { - ptr = self.block.alloc(size_of::()); + loop { + ptr = self.block.alloc(size_of::()); - if ptr.is_null() { - let new_block = self.block.grow_new().unwrap(); - self.block = new_block; - } else { - break; + if ptr.is_null() { + let new_block = self.block.grow_new().unwrap(); + self.block = new_block; + } else { + break; + } } + + ptr::write(ptr as *mut T, value); + // SAFETY: `ptr` was obtained from `self.block.alloc()` + self.block.get_offset(ptr) } - - ptr::write(ptr as *mut T, value); - // SAFETY: `ptr` was obtained from `self.block.alloc()` - self.block.get_offset(ptr) - }} + } #[inline] - unsafe fn lookup(&self, offset: usize) -> &T { unsafe { - &*self.block.get_unchecked(offset).cast::() - }} + unsafe fn lookup(&self, offset: usize) -> &T { + unsafe { &*self.block.get_unchecked(offset).cast::() } + } #[inline] - unsafe fn lookup_mut(&mut self, offset: usize) -> &mut T { unsafe { - &mut *self.block.get_unchecked(offset).cast::().cast_mut() - }} + unsafe fn lookup_mut(&mut self, offset: usize) -> &mut T { + unsafe { &mut *self.block.get_unchecked(offset).cast::().cast_mut() } + } #[allow(clippy::wrong_self_convention)] fn to_concurrent(&mut self) -> ConcurrentOffsetTable