#9 Rustで学ぶ関数の基本

Rustの関数は、型を明示することが必須であるなど、Rustらしい厳格さが表れる部分です。この記事では、Rustにおける関数の基本を解説します。

関数を作ってみる

Rustでは`fn`というキーワードを使います。

fn greet(name: &str) { println!("こんにちは、{}さん", name); } greet("太郎");

引数の型指定は省略できません。これはPythonなどとの大きな違いです。

値を返す関数

fn add(a: i32, b: i32) -> i32 { a + b }

戻り値の型は`->`の後ろに書きます。また、関数の最後の行がセミコロンなしで書かれていると、それが自動的に戻り値になります。`return`を省略できるのはRustらしい特徴です。

途中で早期リターンしたい場合

関数の最後まで実行せず、条件によって早めに値を返したい場合は、明示的に`return`を使います。

fn describe(n: i32) -> &'static str { if n < 0 { return "負の数"; } if n == 0 { return "ゼロ"; } "正の数" }

関数の途中では`return`を使い、最後の行だけは`return`もセミコロンも付けない、という書き分けがRustの典型的なスタイルです。

クロージャ(無名関数)

名前を付けずにその場で関数を定義したい場合は、クロージャという書き方が使えます。`|引数|`の後に処理を書きます。

let add = |a: i32, b: i32| a + b; println!("{}", add(2, 3));

クロージャは`map`や`filter`のような、他の関数に処理を渡したい場面でよく使われます。

Rustならではの注意点

関数の最後の行にセミコロンを付けてしまうと、その行は「値を返す式」ではなく「ただの文」として扱われ、戻り値がなくなってしまいます。「関数がうまく値を返さない」と感じたら、まず最後の行にうっかりセミコロンを付けていないか確認しましょう。この「式(セミコロンなし)は値を返し、文(セミコロンあり)は値を返さない」という考え方は、`if`や`match`など他の構文にも共通するRustの一貫した設計思想です。

まとめ

Rustの関数は`fn`で定義し、引数の型は必ず明示します。最後の行のセミコロンの有無で戻り値が変わるというルール、早期リターンでの`return`の使い方、クロージャの書き方もあわせて覚えておきましょう。


本ページはプロモーションを含みます。

参考書籍(PR)

Rustをもっと学びたい方には「実践Rust入門[言語仕様から開発手法まで]」がおすすめです。


PR

コードを書かずに自動化したい方へ

「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。

コメント

このブログの人気の投稿

#25 Rustで学ぶAI API(ChatGPT等)の呼び出し方の基本

#8 C++で学ぶ文字列操作の基本

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