ユーザー入力の読み取り
CoddyのRustジャーニー「基礎」セクションの一部。レッスン 30/75。
これまでは、コードに値を直接書き込むプログラムを作成してきました。しかし、実際のプログラムでは、ユーザーと対話して情報を取得する必要があることがよくあります。
Rustでは、ユーザーからの入力の取得にはstd::ioライブラリを使用します。このライブラリは、整数、浮動小数点数、文字列など、さまざまな種類の入力を読み取るメソッドを提供します。
std::ioライブラリを使用するには、まずインポートする必要があります:
use std::io;ユーザーから入力を読み取るには、2行のコードが必要です:
let mut my_var = String::new();
// 入力を格納するための空の文字列を作成します
io::stdin().read_line(&mut my_var).unwrap();
// 入力を読み取りますこれにより、入力値が文字列型としてmy_var変数に格納されます。
数値を取得したい場合は、テキスト入力を数値に変換するための追加の手順が必要です。
let age: i32 = input.trim().parse().unwrap();ユーザーがEnterキーを押すと入力に改行文字が追加されるため、.trim()が必要です。たとえば、誰かが「25」と入力してEnterキーを押すと、実際の入力は「25\n」になります。.trim()は、入力の先頭と末尾から余分な空白文字(スペース、改行など)を削除します。
今はunwrap()についてあまり心配しないでください。これは後で学びます。これが潜在的なエラーを簡単な(ただし理想的ではない)方法で処理するのに役立つことだけ知っておいてください。
チャレンジ
初心者ユーザーから入力(名前)を受け取り、その後、ユーザーが入力した名前と感嘆符に続けてHello, を出力するプログラムを書いてください。
たとえば、ユーザーがBobを入力した場合、期待される出力はHello, Bob!です。
次のことを行う必要があります。
Stringオブジェクトを作成して入力を読み取ります。- ユーザーに名前の入力を促します: "
Enter your name:" - 適切な
std::ioメソッドを使用してユーザーの名前を読み取ります。 - 保存した名前に続けて
Hello,を出力し、最後に感嘆符!を付けます。
自分で試してみよう
use std::io;
fn main() {
// Stringオブジェクトを作成する
let mut name = String::new();
// ユーザーに名前の入力を促す (printlnを使用)
// ユーザーの名前を読み取る
// 挨拶メッセージを表示する
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Rustオンラインコンパイラ