見出し画像

Rust 発散する関数とは 使い方と注意点

Rustの「発散する関数」は通常の関数とは異なり、値を返さずにプログラムを終了させたり、ループに入るような関数です。

発散する関数は、リターンタイプが!(Never型)として定義されます。この種の関数は、特定の条件下でプログラムの実行を停止したり、無限ループに入るために使用されます。


発散する関数の使い方

発散する関数の定義

発散する関数は、リターンタイプとして!を指定します。これは、この関数が値を返さずにプログラムを終了させることを示します。

fn panic_function() -> ! {
    panic!("This function will never return"); 
}

発散する関数panic_functionを定義し、panic!を使ってプログラムを強制終了させています。


発散する関数を使用した早期終了

発散する関数は、プログラムの早期終了やエラーハンドリングに使用されます。

fn check_positive(number: i32) {
    if number < 0 {
        panic!("Number must be positive"); 
    }
    println!("Number is positive");
}

check_positive関数が発散する可能性があり、負の数が渡された場合にパニックを発生させてプログラムを終了します。


無限ループでの発散する関数

発散する関数は、無限ループを作成するためにも使用されます。

fn infinite_loop() -> ! {
    loop { 
        println!("This loop will never end");
    }
}

無限ループを持つ発散する関数infinite_loopを定義しています。これは、特定の条件がない限り終了しない関数です。


注意点

発散する関数のリスク

発散する関数は、プログラムを強制終了させたり、無限ループに入るため、慎重に使用する必要があります。
誤って発散する関数を呼び出すと、プログラムが予期せず終了したり、無限ループに陥る可能性があります。


エラーハンドリング

発散する関数は、エラーハンドリングやパニック処理に使われますが、パニックが発生するとプログラム全体に影響を与えることがあります。
エラーハンドリングの際には、発散する関数を使う前に適切な対応策を検討することが必要です。


無限ループの制御

無限ループで発散する関数を使用する場合、ループを抜ける条件やタイミングを確保することが重要です。
無限ループは、プログラムのリソースを消費するため、慎重に設計する必要があります。



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

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

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

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


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

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

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

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


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

この経験に学べ

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