1pub の関数と非公開の関数
モジュールの中身はデフォルトで非公開、pub を付けたものだけ外から呼べる、という基本ルールの例です。非公開の prepare はモジュールの中からは普通に呼べますが、main から呼ぼうとするとコンパイルエラーになります。「外に見せるのは order だけ」という意思表示がコードに刻まれます。
Rust
2pub struct とフィールドの pub は別もの
struct を pub にしても、フィールドは個別に pub を付けない限り非公開のままであることを示す例です。この Point は x も y も pub なので、外から構築もアクセスも自由にできます。「pub は付けた対象だけを公開する」という原則を最小の形で確認できます。
Rust
3入り口だけ公開して計算式を隠す
公開するのは total という入り口だけにして、税計算の実装 with_tax を非公開ヘルパーとして隠す例です。税率の計算方法を変えたくなっても、外から見える total のシグネチャはそのままなので呼び出し側の修正は不要です。これが「非公開は変更に強い」という pub 設計の実利です。
Rust
4非公開フィールドはメソッド経由で読ませる
owner は pub、balance は非公開にして、残高はメソッド経由でしか読めないようにした例です。impl の中のメソッドや関連関数にも pub が必要な点に注目してください。「勝手に残高を書き換えられない」ことを型のレベルで保証する、カプセル化の基本形です。
Rust
5リポジトリ層の公開 API 設計
データ取得を担うリポジトリ層を想定し、公開 API を find だけに絞った実務寄りの例です。名前の解決方法(lookup_name)は非公開なので、ハードコードを後でデータベース問い合わせに差し替えても外部には影響しません。「公開関数 = 守るべき契約、非公開関数 = 自由に変えられる実装」という線引きの実例です。
Rust