#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入門[言語仕様から開発手法まで]」がおすすめです。

コメント

このブログの人気の投稿

#11 Rustで学ぶエラーハンドリングの基本

#16 TypeScriptで学ぶ辞書型(マップ)の基本

#19 Goで学ぶテスト(単体テスト)の基本