pub async fn push_with(
            &mut self,
            f: impl FnOnce(&mut [u8]) -> usize,
        ) -> Result<usize, Error> {
            let _avail = self.available().await;
            Ok(self.state.push_with(f)?)
        }
Push bytes into the DMA buffer via the given closure.
The closure *must* return the actual number of bytes written.
The closure *might* get called with a slice which is smaller than
the total available buffer. Only useful for circular DMA
transfers
esp-hal/src/i2s/master.rs