pub trait SpiDevice<Word: Copy + 'static = u8>: ErrorType {
    fn transaction(&mut self,
        operations: &mut [Operation<'_, Word>])
        -> Result<(), Self::Error>;
    #[inline]
    fn read(&mut self, buf: &mut [Word])
        -> Result<(), Self::Error>;
    #[inline]
    fn write(&mut self, buf: &[Word])
        -> Result<(), Self::Error>;
    #[inline]
    fn transfer(&mut self, read: &mut [Word],
        write: &[Word]) -> Result<(), Self::Error>;
    #[inline]
    fn transfer_in_place(&mut self, buf: &mut 
        [Word]) -> Result<(), Self::Error>;
}
