mirror of
https://github.com/tokio-rs/tokio.git
synced 2026-09-06 00:00:10 +02:00
tokio-fs: rewrite std echo example using async/await (#1442)
This PR fixes the echo example in tokio-fs. Refs: #1255
This commit is contained in:
committed by
Carl Lerche
parent
3b27dc31d2
commit
d0a8e5d6f2
@@ -0,0 +1,34 @@
|
||||
//! Echo everything received on STDIN to STDOUT and STDERR.
|
||||
#![feature(async_await)]
|
||||
|
||||
use futures_util::{FutureExt, SinkExt, StreamExt, TryFutureExt};
|
||||
|
||||
use tokio::codec::{FramedRead, FramedWrite, LinesCodec, LinesCodecError};
|
||||
use tokio::future::ready;
|
||||
use tokio_fs::{stderr, stdin, stdout};
|
||||
use tokio_threadpool::Builder;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let pool = Builder::new().pool_size(1).build();
|
||||
|
||||
pool.spawn(
|
||||
async {
|
||||
let mut input = FramedRead::new(stdin(), LinesCodec::new());
|
||||
let mut output = FramedWrite::new(stdout(), LinesCodec::new());
|
||||
let mut error = FramedWrite::new(stderr(), LinesCodec::new());
|
||||
|
||||
while let Some(line) = input.next().await {
|
||||
let line = line?;
|
||||
output.send(format!("OUT: {}", line)).await?;
|
||||
error.send(format!("ERR: {}", line)).await?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
.map_err(|e: LinesCodecError| panic!(e))
|
||||
.then(|_| ready(())),
|
||||
);
|
||||
|
||||
pool.shutdown_on_idle().await;
|
||||
Ok(())
|
||||
}
|
||||
Reference in New Issue
Block a user