mirror of
				https://github.com/async-rs/async-std.git
				synced 2025-10-31 00:36:38 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			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(())
 | |
|     })
 | |
| }
 |