見出し画像

Rust while letとは 使い方と注意点について

Rustのwhile letは条件付きループとパターンマッチングを組み合わせたものです。

while letを使うと、特定のパターンが一致する間、ループを繰り返し実行できます。


while letの使い方

基本的なwhile let構文

while letは条件に基づいてループを実行し、条件が一致しなくなったらループを終了します。

let mut stack = vec![1, 2, 3];

while let Some(top) = stack.pop() {
    println!("Popped: {}", top);
}

ベクターstackから要素をpopして、Someである間はその値を処理しています。stackが空になってpopがNoneになると、ループは終了します。


エラーハンドリングにおけるwhile let

while letは繰り返し操作の中でエラーハンドリングを行うためにも便利です。

use std::fs::File;
use std::io::{self, BufRead, BufReader};

let file = File::open("data.txt").expect("Cannot open file");
let reader = BufReader::new(file);
let mut lines = reader.lines();

while let Some(Ok(line)) = lines.next() { 
    println!("Line: {}", line);
}

ファイルから行を読み取って、行がある間はその内容を処理しています。while letは、エラーハンドリングとパターンマッチングを組み合わせたループに適しています。


注意点

ループの終了条件

while letは条件が一致しなくなったときにループが終了します。終了条件が適切に設定されているか確認することが重要です。
条件が常に一致する場合、無限ループのリスクがあります。


デストラクトによる所有権の移動:

while letでデストラクトすると、所有権が移動する可能性があります。変数のスコープや所有権のルールに従い、デストラクトの結果を適切に処理することが必要です。


Rustをもっと詳しくなりたい方に

Rustプログラミング完全ガイド 他言語との比較で違いが分かる!

個人的には他の言語開発もそれなりにあったことからこの本を読むことでかなりRustへの理解が深まりました。
プログラムやシステム的な専門用語は当たり前に登場するものの、他の言語での開発経験がある方なら問題ないでしょう。むしろその経験があることで、多言語との比較をしながら読み進めることができます。
内容的には大容量かつ丁寧すぎるほど嚙み砕いて説明がされているため、情報量は十分といえます。Rust自体学習コストが高く、難易度の高い言語のためこのくらいが妥当といえます。
プログラミング初心者レベルの方には難しい内容となっていますが、Rustの概念を理解し、基礎を把握することができる本であること間違いなしです。

Rust学習のために筆者が実際に読んでおすすめしたい本をまとめています。


基礎から学ぶRustプログラミング入門

本コースではRustについて全く経験がない方でもスムーズに学習を進められるようにとなっています。
基本的にはコードベースで解説を行い、抽象度が高く難しい内容に関しては適宜スライドも使いながら丁寧に解説します。そしてただ文法を学ぶだけではなく、最終的には演習としてCLIアプリケーションを作成し学習内容の定着を図ります。

以下の記事では筆者が実際に受講したおすすめUdemy教材をまとめています。

※本ページではアフィリエイトリンク(PR)が含まれています


この記事が参加している募集

この経験に学べ

この記事が気に入ったらサポートをしてみませんか?