Privacy gates

pub은 경로의 모든 문을 차례로 열어야 효과가 있다

`hosting` 모듈만 공개하면 모듈 이름까지는 갈 수 있지만, 내부 함수는 여전히 비공개입니다. 호출 지점부터 최종 아이템까지 각 단계가 통과되어야 합니다.

scope

현재 위치

`eat_at_restaurant`가 있는 모듈에서 첫 이름을 찾습니다. 같은 스코프의 `front_of_house`는 보입니다.

pub mod

모듈 공개

`pub mod hosting`은 부모가 `hosting`이라는 문까지 지나갈 수 있게 합니다.

pub fn

아이템 공개

`pub fn add_to_waitlist`가 있어야 최종 함수 호출이 허용됩니다.

call

경로 사용

`crate::front_of_house::hosting::add_to_waitlist()`가 모든 게이트를 통과합니다.

struct

필드는 따로 공개

pub struct Breakfast

구조체가 공개되어도 필드는 기본 비공개입니다. 공개 생성자나 공개 필드가 필요합니다.

enum

배리언트는 함께 공개

pub enum Appetizer

열거형이 공개되면 `Soup`, `Salad` 같은 배리언트도 사용할 수 있습니다.

api

공개 API는 계약

pub fn eat_at_restaurant

외부 사용자가 의존할 경로만 공개하고, 내부 구조는 바꿀 수 있게 숨깁니다.

읽는 순서: 경로가 맞는지 먼저 보고, 그 다음 각 단계가 현재 스코프에서 보이는지 확인합니다. `pub`은 한 단계씩 적용됩니다.