lv-std 0.0.4

some utils for c and unsafe rust, this is for personal use for now so you can use it but don't expect any regular updates or maintaining
Documentation
use std::marker::PhantomData;
use generic_array::{ArrayLength, GenericArray};
use crate::unsafe_std::c::opaque_handle::OpaqueHandle;
use crate::unsafe_std::ptrs::into_raw_ptr::IntoRawPtr;
use crate::unsafe_std::ptrs::raw_ptr::RawPtr;
use crate::unsafe_std::ptrs::void::void;

#[repr(transparent)]
pub struct HandleBuffer<T>
where
    T: OpaqueHandle,
    T::Size: ArrayLength,
{
    buffer: GenericArray<u8, T::Size>,
    _marker: PhantomData<T>,
}

impl<T> HandleBuffer<T>
where
    T: OpaqueHandle,
    T::Size: ArrayLength,
{
    pub fn new() -> Self {
        Self {
            buffer: GenericArray::default(),
            _marker: PhantomData,
        }
    }
}

unsafe impl<T: OpaqueHandle> IntoRawPtr for HandleBuffer<T> {

    type Pointee = void;

    unsafe fn to_ptr(&self) -> RawPtr<Self::Pointee> {
        RawPtr::<u8>::from(self.buffer.as_ptr()).cast()
    }
}