forked from mirror/async-std
		
	
		
			
				
	
	
		
			30 lines
		
	
	
	
		
			694 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
	
		
			694 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
//! Reads a line from stdin, or exits with an error if nothing is read in 5 seconds.
 | 
						|
 | 
						|
#![feature(async_await)]
 | 
						|
 | 
						|
use std::time::Duration;
 | 
						|
 | 
						|
use async_std::io;
 | 
						|
use async_std::prelude::*;
 | 
						|
use async_std::task;
 | 
						|
 | 
						|
fn main() -> io::Result<()> {
 | 
						|
    task::block_on(async {
 | 
						|
        let stdin = io::stdin();
 | 
						|
        let mut line = String::new();
 | 
						|
 | 
						|
        match stdin
 | 
						|
            .read_line(&mut line)
 | 
						|
            .timeout(Duration::from_secs(5))
 | 
						|
            .await
 | 
						|
        {
 | 
						|
            Ok(res) => {
 | 
						|
                res?;
 | 
						|
                print!("Got line: {}", line);
 | 
						|
            }
 | 
						|
            Err(_) => println!("You have only 5 seconds to enter a line. Try again :)"),
 | 
						|
        }
 | 
						|
 | 
						|
        Ok(())
 | 
						|
    })
 | 
						|
}
 |