1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//! # Simple Input
//! 
//! `simple_input` provides a simple way to ask for user input, inspired by Python's `input` function.
//! 
//! ```
//! extern crate simple_input;
//! use simple_input::input;
//! 
//! fn main() {
//!     let name = input("What is your name? ");
//!     println!("Hello {}!", name);
//! }
//! ```

use std::io;

/// Takes user input, given a prompt.
/// 
/// # Example
/// 
/// ```
/// let user_input = input("What is your name? ");
/// println!("Hello {}!", user_input);
/// ```
pub fn input(prompt: &str) -> String {
    let mut user_input = String::new();
    print!("{}", prompt); // Print the prompt

    io::Write::flush(&mut io::stdout()) // Flush stdout
        .expect("Stdout flush failed while taking user input");

    io::stdin().read_line(&mut user_input) // Accept user input
        .expect("Taking user input from Stdin failed"); 

    user_input.pop(); // Remove the newline character
    return user_input;
}