Rust

【Rust】第5章第1回:モジュール(Module)の基本:コードの整理と再利用

本記事では、Rustのモジュール(Module)システムの基本概念と、コードを整理して再利用する方法について詳しく解説します。適切にモジュールを活用することで、可読性とメンテナンス性の高いコードを作成できます。

0. 記事の概要

この記事を読むメリット

  • Rustのモジュールの基本を理解: コードの整理と再利用を効率化できます。
  • 大規模プロジェクトに対応: プロジェクトのスケールに応じた適切なモジュール設計が可能になります。
  • 可読性の向上: モジュールを活用して分かりやすいコードを構築できます。

この記事で学べること

  • Rustのモジュールの基本構文
  • ファイルとディレクトリを活用したモジュール管理
  • 公開モジュールと非公開モジュールの使い分け

1. モジュールとは?

1.1 モジュールの基本構文

モジュールはmodキーワードを使って定義します。

mod greetings {
    pub fn hello() {
        println!("Hello, Rust!");
    }
}

fn main() {
    greetings::hello();
}

動作解説

モジュールgreetings内で関数helloを定義し、メイン関数から呼び出しています。

2. モジュールの公開と非公開

2.1 pub キーワードの使用

モジュール内の関数を外部から利用可能にするには、pubキーワードを使用します。

mod library {
    pub fn public_function() {
        println!("This is a public function.");
    }

    fn private_function() {
        println!("This is a private function.");
    }
}

fn main() {
    library::public_function();
    // library::private_function(); // エラー!
}

動作解説

pubを付けた関数は外部から呼び出せますが、付けない関数はモジュール内でのみ使用できます。

3. ファイルとディレクトリを活用したモジュール

3.1 ファイル分割の基本

モジュールを別ファイルに分割すると、管理が容易になります。

// main.rs
mod utils;

fn main() {
    utils::say_hello();
}
// utils.rs
pub fn say_hello() {
    println!("Hello from utils module!");
}

動作解説

モジュールutilsを別ファイルutils.rsとして分離し、メインファイルから呼び出しています。

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

  • 「unresolved module」エラー: モジュールが正しく定義されていない場合に発生。
  • 「private function」エラー: pubを付けていない関数を外部から呼び出そうとすると発生。

5. まとめ

本記事では、Rustのモジュールの基本構文、公開・非公開の管理、ファイル分割による整理方法を学びました。次回は、パッケージ管理ツールCargoの使い方について詳しく解説します。