```rust use std::convert::TryFrom; use std::io::Result;
use tokio::prelude::*; use tokio_fd::AsyncFd;
async fn main() -> Result<()> { let mut stdin = AsyncFd::tryfrom(libc::STDINFILENO)?; let mut stdout = AsyncFd::tryfrom(libc::STDOUTFILENO)?; let mut buf = vec![0; 1024];
while let Ok(n) = stdin.read(&mut buf).await {
stdout.write(&buf[..n]).await?;
}
Ok(())
} ```