Rust

【Rust】第2章第3回:関数の定義と呼び出し:基本的な書き方

本記事では、Rustの関数の基本的な定義方法と呼び出し方について詳しく解説します。関数を適切に使うことで、コードの再利用性と可読性を向上させることができます。

0. 記事の概要

この記事を読むメリット

  • Rustの関数の基本を理解: 関数の定義と呼び出し方を学べます。
  • コードの可読性を向上: 適切な関数を活用し、効率的なプログラムを作成できます。
  • 実際のコード例を学ぶ: 具体的なRustコードとその動作解説を見ながら学習できます。

この記事で学べること

  • Rustの関数の基本構文
  • 関数の引数と戻り値の扱い方
  • 関数の適切な設計と再利用方法

1. Rustの関数の基本

1.1 関数の定義

Rustではfnキーワードを使用して関数を定義します。

fn greet() {
    println!("こんにちは、Rust!");
}

fn main() {
    greet();
}

動作解説

このコードでは、greetという関数を定義し、main関数内で呼び出しています。

2. 関数の引数

2.1 引数を持つ関数

関数に引数を渡すことで、動的な処理が可能になります。

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

fn main() {
    greet("太郎");
}

動作解説

greet関数はnameという引数を受け取り、それを利用してメッセージを出力します。

3. 関数の戻り値

3.1 戻り値を持つ関数

Rustでは、関数の戻り値を->の後に型を指定することで定義できます。

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

fn main() {
    let result = add(5, 3);
    println!("5 + 3 = {}", result);
}

動作解説

add関数は2つの整数を受け取り、その和を返します。Rustでは最後の式が自動的に戻り値となります。

4. 関数の再利用と設計

4.1 再利用しやすい関数の設計

関数は単一の責務を持たせることで再利用しやすくなります。

fn square(x: i32) -> i32 {
    x * x
}

fn main() {
    println!("4の二乗は {}", square(4));
    println!("7の二乗は {}", square(7));
}

動作解説

square関数は整数を受け取り、その二乗を返すシンプルな関数です。

5. よくあるエラーと対処法

  • 「mismatched types」エラー: 関数の戻り値の型が異なる場合に発生。型を正しく指定する。
  • 「expected function, found macro」エラー: 関数の代わりにマクロを誤って使用した場合に発生。!の有無を確認する。

6. まとめ

本記事では、Rustの関数の定義と呼び出しの基本について解説しました。次回は、関数の引数と戻り値の詳細についてさらに掘り下げます。