Rust の基礎

Reading User Input in Rust

Read a line with read_line, trim it and parse it into a number without crashing on bad input.

  • 初級
  • 約2分で読めます
  • 実行できるサンプル 1 件
学べること
  • io::stdin().read_line
  • trim and parse
  • Handling bad input with match
From the keyboard to a number
  1. 1read_line"36\n"
  2. 2trim()"36"
  3. 3parse::<u32>()Ok(36)
  4. 4age + 137

Text in, number out

read_line waits for the user to type a line and press Enter, then adds the text to a String. The text always arrives as a string, so numbers must be parsed before you calculate with them.

trim removes the newline that read_line keeps at the end. parse::<u32>() returns Ok with the number or Err when the text is not a number, and match handles both cases. The sample output uses the answers Ada and 36: in the online compiler, type your answers when the prompts appear.

重要なポイント

  1. read_line keeps the newline: call trim.
  2. parse returns Ok(number) or Err.
  3. match handles both cases.

実行できる Rust のサンプル

Rust
コードを実行 →
main.rs
use std::io;

fn main() {
    println!("What is your name?");
    let mut name = String::new();
    io::stdin().read_line(&mut name).expect("failed to read");
    let name = name.trim();

    println!("How old are you?");
    let mut age = String::new();
    io::stdin().read_line(&mut age).expect("failed to read");

    match age.trim().parse::<u32>() {
        Ok(age) => println!("Hello, {name}! Next year you will be {}.", age + 1),
        Err(_) => println!("Hello, {name}! That is not a number."),
    }
}
この例の実行ボタンを作成 実行結果
What is your name?
How old are you?
Hello, Ada! Next year you will be 37.

練習

サンプルをオンラインコンパイラーで開き、値を変えたり行を追加したりして、実行する前に出力を予想してみましょう。次に、わざとコードを壊してコンパイラーのメッセージを読んでみてください。

このレッスンを終えましたか?

学習済みにすると進み具合を記録できます。

チャレンジで練習する

このレッスンの内容を使って実際の問題を解きましょう。各チャレンジはブラウザで動き、すぐにテストされ、AI のレビューも受けられます。

すべてのチャレンジ