Merge pull request #6 from stefandisch/master
[rust-101.git] / workspace / src / part03.rs
index 96ac4bf44b787615b1ca06cc6822de936f99d566..384015681130ec3ecfce3eace2f7613484a61b4b 100644 (file)
@@ -1,5 +1,3 @@
-// ***Remember to enable/add this part in `main.rs`!***
-
 // Rust-101, Part 03: Input
 // ========================
 
 // Rust-101, Part 03: Input
 // ========================
 
@@ -12,9 +10,9 @@ use std::io;
 
 fn read_vec() -> Vec<i32> {
     let mut vec: Vec<i32> = Vec::<i32>::new();
 
 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();
     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 has type `io::Result<String>`.
     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 has type `io::Result<String>`.
@@ -24,7 +22,7 @@ fn read_vec() -> Vec<i32> {
         let line = line.unwrap();
         // Now that we have our `String`, we want to make it an `i32`.
 
         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!()
             },
             Ok(num) => {
                 unimplemented!()
             },
@@ -59,7 +57,7 @@ pub fn main() {
 // 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.
 // 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> {
     /* Add things here */
 }
 impl<T: Print> SomethingOrNothing<T> {