#4 Rustで学ぶ標準入力の基本
Rustにおける標準入力の扱いは、他の学習向け言語に比べると、やや手順を踏む必要があります。この記事では、Rustで利用者からの入力を受け取る基本的な方法を解説します。
std::ioを使う
Rustで標準入力を扱うには、標準ライブラリの`std::io`という部分を利用します。
use std::io;
let mut input = String::new();
io::stdin().read_line(&mut input).expect("読み込みに失敗しました");
あらかじめ空の文字列(`String::new()`)を用意しておき、そこに入力内容を読み込む、という流れになります。Pythonの`input()`のように1行では書けない点が、Rustらしい特徴です。
改行文字を取り除く
`read_line`で読み込んだ文字列には、利用者がEnterキーを押したことによる改行文字が含まれています。数値として扱う前に、`trim()`という機能で余分な空白や改行を取り除く必要があります。
let age: i32 = input.trim().parse().expect("数値ではありません");
Result型というRustらしい仕組み
先ほどのコードに出てきた`expect`は、Rustの「失敗するかもしれない処理の結果」を表す`Result`という仕組みに関わっています。入力の読み込みや数値への変換は失敗する可能性があるため、Rustはこの`Result`という形で「うまくいった場合」と「失敗した場合」の両方を扱うことを求めてきます。
Rustならではの注意点
他の言語の感覚で「入力を受け取って終わり」と考えていると、`Result`や`trim()`の必要性に戸惑うかもしれません。しかしこれらはすべて、想定外の入力によるバグを未然に防ぐためのRustの工夫です。
まとめ
Rustの標準入力は`std::io`を使い、`trim()`で余分な文字を取り除いてから変換するという手順を踏みます。手間はかかりますが、その分安全性の高い入力処理が書けます。
本ページはプロモーションを含みます。
参考書籍(PR)
Rustをもっと学びたい方には「実践Rust入門[言語仕様から開発手法まで]」がおすすめです。
コメント
コメントを投稿