@@ -296,9 +296,11 @@ impl<T> Clone for Bucket<T> {
296296}
297297
298298impl < 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