fluke-maybe-uring 0.1.1

Replicates some tokio-uring types to allow building code without it
Documentation
use bytemuck::TransparentWrapper;

#[repr(transparent)]
pub struct BufCompat<T>(pub T);

unsafe impl<T> TransparentWrapper<T> for BufCompat<T> {}

unsafe impl<T> tokio_uring::buf::IoBuf for BufCompat<T>
where
    T: crate::buf::IoBuf,
{
    #[inline(always)]
    fn stable_ptr(&self) -> *const u8 {
        self.0.stable_ptr()
    }

    #[inline(always)]
    fn bytes_init(&self) -> usize {
        self.0.bytes_init()
    }

    #[inline(always)]
    fn bytes_total(&self) -> usize {
        self.0.bytes_total()
    }
}

unsafe impl<T> tokio_uring::buf::IoBufMut for BufCompat<T>
where
    T: crate::buf::IoBufMut,
{
    #[inline(always)]
    fn stable_mut_ptr(&mut self) -> *mut u8 {
        self.0.stable_mut_ptr()
    }

    #[inline(always)]
    unsafe fn set_init(&mut self, pos: usize) {
        self.0.set_init(pos)
    }
}