可視性

モジュールはプライバシーの境界です。

  • モジュール アイテムはデフォルトでプライベートです(実装の詳細は表示されません)。
  • 親アイテムと兄弟アイテムは常に見えます。
  • 言い換えれば、あるアイテムがモジュール foo から見える場合、そのアイテムは foo のすべての子孫から見えます。
mod outer {
    fn private() {
        println!("outer::private");
    }

    pub fn public() {
        println!("outer::public");
    }

    mod inner {
        fn private() {
            println!("outer::inner::private");
        }

        pub fn public() {
            println!("outer::inner::public");
            super::private();
        }
    }
}

fn main() {
    outer::public();
}
This slide should take about 5 minutes.
  • モジュールを公開するには pub キーワードを使用します。

また、高度な pub(...) 指定子を使用して、公開範囲を制限することもできます。

  • Rust リファレンス をご覧ください。
  • pub(crate) の可視性を設定するのは一般的なパターンです。
  • それほど一般的ではありませんが、特定のパスに対して可視性を指定することが出来ます。
  • どのような場合も、祖先モジュール(およびそのすべての子孫)に可視性を与える必要があります。