lean_sys/types/
incomplete_array.rs1use core::marker::PhantomData;
4
5#[repr(C)]
6#[derive(Default)]
7pub struct IncompleteArrayField<T>(PhantomData<T>, [T; 0]);
8impl<T> IncompleteArrayField<T> {
9 #[inline]
10 pub const fn new() -> Self {
11 IncompleteArrayField(PhantomData, [])
12 }
13 #[inline]
14 pub fn as_ptr(&self) -> *const T {
15 self as *const _ as *const T
16 }
17 #[inline]
18 pub fn as_mut_ptr(&mut self) -> *mut T {
19 self as *mut _ as *mut T
20 }
21 #[inline]
22 pub unsafe fn as_slice(&self, len: usize) -> &[T] {
23 core::slice::from_raw_parts(self.as_ptr(), len)
24 }
25 #[inline]
26 pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
27 core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
28 }
29}
30impl<T> core::fmt::Debug for IncompleteArrayField<T> {
31 fn fmt(&self, fmt: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
32 fmt.write_str("IncompleteArrayField")
33 }
34}