pub async fn read_async<A: Into<I2cAddress>>(
        &mut self,
        address: A,
        buffer: &mut [u8],
    ) -> Result<(), Error> {
        self.transaction_async(address, &mut [Operation::Read(buffer)])
            .await
    }
Reads enough bytes from slave with `address` to fill `buffer`

# Errors

The corresponding error variant from [`Error`] will be returned if the
passed buffer has zero length.
esp-hal/src/i2c/master/mod.rs