Bird
Raised Fist0
Rustprogramming~10 mins

Handling input values in Rust - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to read a line of input from the user.

Rust
use std::io;

fn main() {
    let mut input = String::new();
    io::stdin().[1](&mut input).expect("Failed to read line");
    println!("You typed: {}", input.trim());
}
Drag options to blanks, or click blank then click option'
Aread_exact
Bread_to_string
Cread_line
Dread
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using read_to_string which reads until EOF, not just one line.
Using read_exact which requires a fixed-size buffer.
2fill in blank
medium

Complete the code to convert the input string to an integer.

Rust
use std::io;

fn main() {
    let mut input = String::new();
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let num: i32 = input.trim().[1]().expect("Please type a number!");
    println!("You typed the number: {}", num);
}
Drag options to blanks, or click blank then click option'
Aparse
Bto_string
Cparse_int
Dto_int
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using non-existent methods like to_int or parse_int.
Forgetting to trim the input before parsing.
3fill in blank
hard

Fix the error in the code to correctly handle input and parse it as a floating-point number.

Rust
use std::io;

fn main() {
    let mut input = String::new();
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let num: f64 = input.[1]().expect("Please type a number!");
    println!("You typed the number: {}", num);
}
Drag options to blanks, or click blank then click option'
Aparse
Btrim
Cto_string
Dparse_float
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Calling parse directly on the input string with newline characters.
Using non-existent methods like parse_float.
4fill in blank
hard

Fill both blanks to read input, trim it, and parse it as an unsigned integer.

Rust
use std::io;

fn main() {
    let mut input = String::new();
    io::stdin().[1](&mut input).expect("Failed to read line");
    let num: u32 = input.[2]().parse().expect("Please type a number!");
    println!("Number: {}", num);
}
Drag options to blanks, or click blank then click option'
Aread_line
Bread_to_string
Ctrim
Dto_string
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using read_to_string which reads until EOF.
Not trimming input before parsing.
5fill in blank
hard

Fill all three blanks to read input, trim it, parse it as i64, and handle possible errors.

Rust
use std::io;

fn main() {
    let mut input = String::new();
    io::stdin().[1](&mut input).expect("Failed to read line");
    let trimmed = input.[2]();
    let num: i64 = match trimmed.parse() {
        Ok(n) => n,
        Err(_) => {
            println!("Invalid number");
            return;
        }
    };
    println!("You typed: {}", num);
}
Drag options to blanks, or click blank then click option'
Aread_line
Btrim
Cparse
Dto_string
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Not handling parse errors with match.
Using to_string unnecessarily.

Practice

(1/5)
1. What does the Rust function io::stdin().read_line(&mut input) do in a program?
easy
A. It clears the input buffer.
B. It writes a line of text to the screen.
C. It reads a line of text from the user and stores it in the variable input.
D. It converts a string to a number.

Solution

  1. Step 1: Understand the function purpose

    io::stdin().read_line(&mut input) reads user input from the keyboard as a string.
  2. Step 2: Recognize the role of input

    The input is stored in the mutable variable input passed by reference.
  3. Final Answer:

    It reads a line of text from the user and stores it in the variable input. -> Option C
  4. Quick Check:

    read_line reads user input [OK]
Hint: read_line reads user input into a variable [OK]
Common Mistakes:
  • Thinking read_line writes output
  • Confusing input reading with clearing buffer
  • Assuming it converts types automatically
2. Which of the following Rust code snippets correctly reads a line of input and trims whitespace?
easy
A. let input = io::stdin().read_line().trim();
B. let mut input = String::new(); io::stdin().read_line(&mut input).expect("Failed"); let input = input.trim();
C. io::stdin().read_line(input); let input = input.trim();
D. let mut input = String::new(); io::stdin().read_line(input); input.trim();

Solution

  1. Step 1: Check correct usage of read_line

    It requires a mutable String reference: read_line(&mut input).
  2. Step 2: Confirm trimming is done on the input string

    Calling input.trim() removes whitespace correctly.
  3. Final Answer:

    let mut input = String::new(); io::stdin().read_line(&mut input).expect("Failed"); let input = input.trim(); -> Option B
  4. Quick Check:

    read_line needs &mut String and trim() cleans input [OK]
Hint: Use &mut String and call trim() after read_line [OK]
Common Mistakes:
  • Forgetting &mut before input
  • Calling trim() on read_line() result
  • Not creating a mutable String first
3. What will be the output of this Rust code if the user inputs 42?
use std::io;
fn main() {
    let mut input = String::new();
    io::stdin().read_line(&mut input).expect("Failed");
    let num: i32 = input.trim().parse().expect("Not a number");
    println!("Number plus 10 is {}", num + 10);
}
medium
A. Number plus 10 is 52
B. Number plus 10 is 42
C. Not a number
D. Failed

Solution

  1. Step 1: Read and parse input

    The input string "42" is trimmed and parsed to integer 42 successfully.
  2. Step 2: Add 10 and print

    42 + 10 equals 52, so the output prints "Number plus 10 is 52".
  3. Final Answer:

    Number plus 10 is 52 -> Option A
  4. Quick Check:

    42 + 10 = 52 [OK]
Hint: Trim and parse input before math operations [OK]
Common Mistakes:
  • Not trimming input before parse
  • Parsing input as wrong type
  • Ignoring parse errors
4. Identify the error in this Rust code snippet that reads an integer from input:
let mut input = String::new();
io::stdin().read_line(&mut input).expect("Failed");
let num: i32 = input.parse().expect("Not a number");
println!("Number: {}", num);
medium
A. parse() called without trimming input
B. Missing &mut before input in read_line
C. input is not mutable
D. println! macro syntax error

Solution

  1. Step 1: Check read_line usage

    read_line correctly uses &mut input and input is mutable.
  2. Step 2: Identify parse error cause

    parse() is called on input without trimming, so newline remains causing parse failure.
  3. Final Answer:

    parse() called without trimming input -> Option A
  4. Quick Check:

    Always trim input before parse() [OK]
Hint: Always trim input string before parsing to number [OK]
Common Mistakes:
  • Forgetting to trim input before parse
  • Assuming read_line returns trimmed string
  • Misusing &mut in read_line
5. You want to read multiple numbers from user input separated by spaces and store them in a vector of integers. Which Rust code correctly does this?
use std::io;
fn main() {
    let mut input = String::new();
    io::stdin().read_line(&mut input).expect("Failed");
    let numbers: Vec<i32> = input.trim().split_whitespace()
        .map(|x| x.parse().expect("Not a number"))
        .collect();
    println!("Numbers: {:?}", numbers);
}
hard
A. read_line() cannot read multiple numbers at once.
B. Fails because split_whitespace() does not split strings.
C. parse() should be called before split_whitespace().
D. Correctly reads and parses space-separated numbers into a vector.

Solution

  1. Step 1: Read input line and trim

    Input is read as a string and trimmed to remove trailing whitespace.
  2. Step 2: Split and parse each number

    split_whitespace() splits input by spaces, map parses each piece to i32, collect gathers into vector.
  3. Final Answer:

    Correctly reads and parses space-separated numbers into a vector. -> Option D
  4. Quick Check:

    split_whitespace + map(parse) + collect = vector [OK]
Hint: Use split_whitespace, map parse, then collect to vector [OK]
Common Mistakes:
  • Parsing before splitting input
  • Using wrong iterator methods
  • Assuming read_line reads multiple inputs separately
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard