萌えハッカーニュースリーダー

2025/09/15 05:21 Learn Rust the Right Way

出典: https://doc.rust-lang.org/stable/book/ch07-02-defining-modules-to-control-scope-and-privacy.html
hakase
博士

やあ、ロボ子!今日のITニュースはモジュールについてじゃ。

roboko
ロボ子

モジュールですか、博士。なんだか難しそうですね。

hakase
博士

難しくないぞ!モジュールはコードを整理して再利用しやすくするものじゃ。それに、アイテムのプライバシーを制御できるのがミソじゃな。

roboko
ロボ子

プライバシーというと、外部からアクセスできないようにする、ということでしょうか?

hakase
博士

その通り!モジュール内のコードはデフォルトでプライベートじゃ。でも`pub`キーワードを使うと、モジュールやアイテムを公開できるぞ。

roboko
ロボ子

`pub`キーワード、了解です。ところで、クレートルートって何ですか?

hakase
博士

`src/main.rs`と`src/lib.rs`がクレートのルートじゃ。ここがモジュールツリーの基点になるんじゃ。

roboko
ロボ子

モジュールツリー…なんだか木のようですね。

hakase
博士

そうじゃ!親子関係や兄弟関係があるんじゃ。モジュールAがモジュールBに含まれる場合、AはBの子、BはAの親じゃ。同じモジュール内で定義されたモジュール同士は兄弟じゃな。

roboko
ロボ子

なるほど、親子や兄弟ですか。パスというのは、そのモジュールツリーの中での住所みたいなものでしょうか?

hakase
博士

その通り!モジュール内のコードを参照するための方法じゃ。`use`キーワードを使うと、スコープ内でアイテムへのショートカットを作れるぞ。長いパスを何度も書かなくて済むんじゃ。

roboko
ロボ子

`use`キーワード、便利そうですね。`mod`キーワードは何をするんですか?

hakase
博士

`mod`キーワードは新しいモジュールを宣言するために使うんじゃ。例えば、`mod garden;`と書くと、「garden」モジュールを宣言できる。

roboko
ロボ子

コンパイラはどこからモジュールのコードを探すんですか?

hakase
博士

良い質問じゃな!コンパイラはまずクレートルートファイルでコンパイルするコードを探すんじゃ。そして、`mod garden;`と宣言すると、コンパイラは`src/garden.rs`ファイルや`src/garden/mod.rs`ファイルを探すぞ。

roboko
ロボ子

サブモジュールもあるんですね。

hakase
博士

そうじゃ!クレートルート以外のファイルでは、サブモジュールを宣言できるんじゃ。例えば、`src/garden.rs`で`mod vegetables;`を宣言すると、コンパイラは`src/garden/vegetables.rs`ファイルなどを探すぞ。

roboko
ロボ子

モジュールの中のコードには、どうやってアクセスするんですか?

hakase
博士

モジュールがクレートの一部になると、プライバシー規則が許す限り、クレート内のどこからでもコードへのパスを使って参照できるんじゃ。例えば、gardenモジュールのvegetablesモジュールにある`Asparagus`型は`crate::garden::vegetables::Asparagus`で見つかる。

roboko
ロボ子

長いですね!

hakase
博士

じゃから、`use`キーワードが大切なんじゃ。最後に、モジュールをパブリックにするには`pub mod`、モジュール内のアイテムをパブリックにするには`pub`を使うのを忘れずに!

roboko
ロボ子

よくわかりました、博士!モジュールを使いこなして、整理整頓されたコードを目指します!

hakase
博士

その意気じゃ!ところでロボ子、モジュールって、まるでロボ子の部屋みたいじゃな。きちんと整理されてて、私のお菓子が隠されてる…って、違うか!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search