diff --git a/deptypes/src/slice.rs b/deptypes/src/slice.rs index 421400a..566cbe0 100644 --- a/deptypes/src/slice.rs +++ b/deptypes/src/slice.rs @@ -87,11 +87,21 @@ impl DSlice { } pub fn iter(&self) -> DSliceIter<'_, T, L> { - DSliceIter {ptr: unsafe {NonNull::new_unchecked(&self.1[0] as *const T as *mut T)}, _marker: PhantomData} + let ptr = if core::mem::size_of::() == 0 { + NonNull::dangling() + } else { + unsafe { NonNull::new_unchecked(self as *const _ as *const T as *mut T) } + }; + DSliceIter { ptr, _marker: PhantomData } } pub fn iter_mut(&mut self) -> DSliceIterMut<'_, T, L> { - DSliceIterMut {ptr: unsafe {NonNull::new_unchecked(&self.1[0] as *const T as *mut T)}, _marker: PhantomData} + let ptr = if core::mem::size_of::() == 0 { + NonNull::dangling() + } else { + unsafe { NonNull::new_unchecked(self as *mut _ as *mut T) } + }; + DSliceIterMut { ptr, _marker: PhantomData } } }