pub fn transaction<'a, A: Into<I2cAddress>>(
        &mut self,
        address: A,
        operations: impl IntoIterator<Item = &'a mut Operation<'a>>,
    ) -> Result<(), Error> {
        self.driver()
            .transaction_impl(address.into(), operations.into_iter().map(Operation::from))
            .inspect_err(|_| self.internal_recover())
    }
# Errors

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