-// ***Remember to enable/add this part in `main.rs`!***
-
// Rust-101, Part 03: Input
// ========================
fn read_vec() -> Vec<i32> {
let mut vec: Vec<i32> = Vec::<i32>::new();
- // The central handle to the standard input is made available by `io::stdin()`.
+ // The central handle to the standard input is made available by the function `io::stdin`.
let stdin = io::stdin();
- println!("Enter a list of numbers, one per line. End with Ctrl-D.");
+ println!("Enter a list of numbers, one per line. End with Ctrl-D (Linux) or Ctrl-Z (Windows).");
for line in stdin.lock().lines() {
// Rust's type for (dynamic, growable) strings is `String`. However, our variable `line`
- // here is not yet of that type: It rather has type `io::Result<String>`.
+ // here is not yet of that type: It has type `io::Result<String>`.
// I chose the same name (`line`) for the new variable to ensure that I will never, accidentally,
// access the "old" `line` again.
let line = line.unwrap();
// Now that we have our `String`, we want to make it an `i32`.
- match line.parse::<i32>() {
+ match line.trim().parse::<i32>() {
Ok(num) => {
unimplemented!()
},
// Notice that I called the function on `SomethingOrNothing` `print2` to disambiguate from the `print` defined previously.
//
// *Hint*: There is a macro `print!` for printing without appending a newline.
-trait Print {
+pub trait Print {
/* Add things here */
}
impl<T: Print> SomethingOrNothing<T> {