rust: lib.rs の中は pub しなくても結構見える
目次
最終更新日:2025/11/27
pub を付けないと別のファイルからは全然見えないのかと思っていたが、どうもそうではないらしい。
例えば lib.rs の中に定義した関数があった場合、そこに mod でぶら下げた子モジュールの中からその関数は呼べるらしい。
なら struct の中のメンバーも同じ要領かと思ったが、そこはそうではないそうだ。
そこに pub が必要だったので関数も同様だろうと思って pub(crate) をつけていたのだが、少なくとも子モジュールに対しては不要ということになる。
では pub(crate) とデフォルト(何もつけない)の違いはどこかというと、同一クレート内で自分と同等か親モジュールに対してのものだそうだ。
つけていないと親や兄弟からは見えない、と。
writer: hiro99ma