embedded-dma
embedded-dma copied to clipboard
API to unsafely use any buffer?
Maybe embedded-dma could provide an (unsafe, obviously) API to use any buffer with minimal fuss?
Something like this:
struct UnsafeWriteBuffer<'a, T: ?Sized>{
inner: &'a mut T,
}
impl<'a, T:?Sized> UnsafeWriteBuffer<'a, T>{
pub unsafe fn new(inner: &'a mut T) -> Self{
Self { inner }
}
}
impl<'a, T:?Sized> Deref for UnsafeWriteBuffer<'a, T>{
type Target = T;
fn deref(&self) -> &Self::Target {
self.inner
}
}
impl<'a, T:?Sized> DerefMut for UnsafeWriteBuffer<'a, T>{
fn deref_mut(&mut self) -> &mut Self::Target {
self.inner
}
}
unsafe impl<'a, T:?Sized> StableDeref for UnsafeWriteBuffer<'a, T>{
}
unsafe impl<'a, T: WriteTarget + ?Sized> WriteBuffer for UnsafeWriteBuffer<'a, T>{
type Word = T::Word;
unsafe fn write_buffer(&mut self) -> (*mut Self::Word, usize) {
self.inner.as_write_buffer()
}
}