Exercise 08-01
authorGreg Burri <greg.burri@gmail.com>
Sun, 27 Oct 2024 11:17:32 +0000 (12:17 +0100)
committerGreg Burri <greg.burri@gmail.com>
Sun, 27 Oct 2024 11:17:32 +0000 (12:17 +0100)
exercises/08_futures/00_intro/src/lib.rs
exercises/08_futures/01_async_fn/src/lib.rs

index c730220..d464426 100644 (file)
@@ -1,6 +1,6 @@
 fn intro() -> &'static str {
     // TODO: fix me ðŸ‘‡
-    "I'm ready to _!"
+    "I'm ready to learn about futures!"
 }
 
 #[cfg(test)]
index b8a83d8..dc825f9 100644 (file)
@@ -1,4 +1,7 @@
-use tokio::net::TcpListener;
+use tokio::{
+    io::{AsyncReadExt, AsyncWriteExt},
+    net::TcpListener,
+};
 
 // TODO: write an echo server that accepts incoming TCP connections and
 //  echoes the received data back to the client.
@@ -11,7 +14,11 @@ use tokio::net::TcpListener;
 // - `tokio::net::TcpStream::split` to obtain a reader and a writer from the socket
 // - `tokio::io::copy` to copy data from the reader to the writer
 pub async fn echo(listener: TcpListener) -> Result<(), anyhow::Error> {
-    todo!()
+    loop {
+        let (mut tcp_stream, _socket_addr) = listener.accept().await?;
+        let (mut reader, mut writer) = tcp_stream.split();
+        tokio::io::copy(&mut reader, &mut writer).await?;
+    }
 }
 
 #[cfg(test)]