๊ฐ์์ฑ
๋ชจ๋์ ํ์ ์ด๋ ํจ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐ๊นฅ์ ๋ ธ์ถ๋์ง ์์ต๋๋ค:
- ๋ฐ๋ผ์ ๋ชจ๋์ ์ธ๋ถ ๊ตฌํ ๋ด์ฉ์ด ๊ฐ์ถฐ์ง๋๋ค.
- ๋ถ๋ชจ์ ์ด์ ํญ๋ชฉ์ ์ธ์ ๋ ์ ๊ทผ ๊ฐ๋ฅํฉ๋๋ค.
- ์ฆ, ๋ชจ๋
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(); }
pub
ํค์๋๋ ๋ชจ๋์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ํ, ๊ณ ๊ธ ๊ธฐ๋ฅ์ผ๋ก pub(...)
์ง์ ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ณต๊ฐ ๋ฒ์๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
- ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
pub(crate)
๋ก ๊ฐ์์ฑ์ ์ง์ ํ๋ ๊ฒ์ด ์์ฃผ ์ฐ์ ๋๋ค.- ์์ฃผ ์ฐ์ด์ง ์์ง๋ง ํน์ ๊ฒฝ๋ก์ ๋ํด์๋ง ๊ฐ์์ฑ์ ๋ถ์ฌํ ์ ์์ต๋๋ค.
- ์ด๋ค ๊ฒฝ์ฐ์ด๋ ๊ฐ์์ฑ์ด ๋ถ์ฌ๋๋ฉด ํด๋น ๋ชจ๋์ ํฌํจํ์ฌ ํ์์ ๋ชจ๋ ๋ชจ๋์ด ์ ์ฉ๋ฐ์ต๋๋ค.