The buffered-io crate implements buffering for the embedded-io/embedded-io-asyncRead and Write traits.
tokio_test::block_on(async{use buffered_io::asynch::BufferedWrite;use embedded_io_async::Write;let uart_tx = Vec::new();// The underlying uart peripheral implementing Write to where buffered bytes are writtenletmut write_buf = [0;120];letmut buffering = BufferedWrite::new(uart_tx,&mut write_buf);
buffering.write(b"hello").await.unwrap();// This write is buffered
buffering.write(b" ").await.unwrap();// This write is also buffered
buffering.write(b"world").await.unwrap();// This write is also buffered
buffering.flush().await.unwrap();// The string "hello world" is written to uart in one write})