embedded-dma
embedded-dma copied to clipboard
Cannot implement `WriteTarget` for multiple word sizes
I have a use case where I'd like to reuse a buffer type for multiple different DMA operations that require different word sizes and alignments. Basically what I'd like to use as the buffer type is
union Buffer {
u8: [u8; 1024],
i16: [i16; 512],
}
Now I'd like to implement WriteTarget
twice for this type, with a u8
and i16
word. Unfortunately that doesn't work, since the word type is an associated type of the WriteTarget
trait. Maybe it would be better if it was a type parameter instead?
You could add NewType wrappers around your buffer type and implement WriteTarget
on those.
The trait could be changed, too, but this seems to be a rather niche use case.
I'm not sure how I would turn a Box<Buffer>
into a Box<NewtypedBuffer>
though, at least when Box
is some library-provided smart pointer and not alloc::boxed::Box
. For example heapless' pool::singleton::Box
is generic over the pool it came from, not the pointee, so I don't see a convenient way to use a newtype there.