可視性

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

  • モジュールのアイテムはデフォルトで非公開です(実装の詳細を隠します)。
  • 親および兄弟のアイテムは常に可視です。
  • 言い換えると、あるアイテムがモジュール foo で可視であれば、そのアイテムは foo のすべての子孫でも可視です。
// Copyright 2022 Google LLC
// SPDX-License-Identifier: Apache-2.0

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();
}
  • モジュールを公開するには pub キーワードを使用します。

さらに、公開範囲を制限するための高度な pub(...) 指定子もあります。

  • Rust Reference を参照してください。
  • pub(crate) の可視性を設定するのは一般的なパターンです。
  • あまり一般的ではありませんが、特定のパスに可視性を与えることもできます。
  • いずれの場合も、可視性は祖先モジュール(およびそのすべての 子孫)に対して付与されている必要があります。