use futures_lite::StreamExt; use wove::{ io::{AsyncReadLoan, AsyncWriteLoan, BufferResultExt}, io_impl::io_uring::IoUring, }; pub async fn go(uring: &IoUring) -> std::io::Result<()> { let mut listener = wove::net::TcpListener::bind(uring, "127.0.0.1:0").await?; let addr = listener.local_addr().await?; println!("Listening on {addr}"); let mut incoming = listener.incoming().await?; while let Some(conn) = incoming.next().await { let mut conn = conn?; let (buf, _read_amt) = conn.read(vec![0; 4096]).await.buf_ok()?; conn.write(buf).await.buf_ok()?; } Ok(()) } pub fn main() { let uring = IoUring::new().unwrap(); uring.block_on(go(&uring)).unwrap(); }