Skip to content

Commit 3831650

Browse files
committed
Make mem::size_of::<T>() == 0 const
1 parent c0247fa commit 3831650

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

src/raw/mod.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -296,9 +296,11 @@ impl<T> Clone for Bucket<T> {
296296
}
297297

298298
impl<T> Bucket<T> {
299+
const IS_ZERO_SIZED_TYPE: bool = mem::size_of::<T>() == 0;
300+
299301
#[inline]
300302
unsafe fn from_base_index(base: NonNull<T>, index: usize) -> Self {
301-
let ptr = if mem::size_of::<T>() == 0 {
303+
let ptr = if Self::IS_ZERO_SIZED_TYPE {
302304
// won't overflow because index must be less than length
303305
(index + 1) as *mut T
304306
} else {
@@ -310,15 +312,15 @@ impl<T> Bucket<T> {
310312
}
311313
#[inline]
312314
unsafe fn to_base_index(&self, base: NonNull<T>) -> usize {
313-
if mem::size_of::<T>() == 0 {
315+
if Self::IS_ZERO_SIZED_TYPE {
314316
self.ptr.as_ptr() as usize - 1
315317
} else {
316318
offset_from(base.as_ptr(), self.ptr.as_ptr())
317319
}
318320
}
319321
#[inline]
320322
pub fn as_ptr(&self) -> *mut T {
321-
if mem::size_of::<T>() == 0 {
323+
if Self::IS_ZERO_SIZED_TYPE {
322324
// Just return an arbitrary ZST pointer which is properly aligned
323325
mem::align_of::<T>() as *mut T
324326
} else {
@@ -327,7 +329,7 @@ impl<T> Bucket<T> {
327329
}
328330
#[inline]
329331
unsafe fn next_n(&self, offset: usize) -> Self {
330-
let ptr = if mem::size_of::<T>() == 0 {
332+
let ptr = if Self::IS_ZERO_SIZED_TYPE {
331333
(self.ptr.as_ptr() as usize + offset) as *mut T
332334
} else {
333335
self.ptr.as_ptr().sub(offset)

0 commit comments

Comments
 (0)