/src
Cargo.toml
src/main.rs: 실행가능한 프로그램
src/lib.rs: 라이브러리 크레이트
모듈선언은 코드내에서는 mod 키워드로 가능하다.
mod 키워드는 모듈을 선언하는역할과 불러오는 역할을 한다.
Cargo.toml에 적힌 크레이트나 모듈은 컴파일러가 암묵적으로 불러오기 때문에 mod를 사용할 필요가 없다.
mod modulename;
// or
mod {
moduleitems
...
}
src/
├── main.rs (안에 'mod A;' 선언)
└── A.rs (O: 모듈 A로 인식됨)
src/
├── main.rs (안에 'mod A;' 선언)
└── A/
└── mod.rs (O: 모듈 A로 인식됨)
단점으로 성능저하가 거론되었는데 이는 사실이 아니다. 러스트의 모듈은 컴파일되어 단일 바이너리 파일이 되기때문에 모듈간의 호출이 성능에 영향을 주지 않는다. IPC는 더더욱 필요가 없다.
아마도 마이크로 커널의 모듈화의 단점을 말한 것 같은데 러스트 모듈을 설명하는 문맥에서는 혼동을 불러올 수 있어보인다.
모듈이나 함수, 타입, 구조체 등의 선언 앞에 붙여 모듈 밖에서 접근할 수 있도록 한다.
use 크레이트::모듈::모듈::아이템
use는 임포트하는 키워드가 아니다. 단지 네임스페이스를 단축하기 위해 사용한다.
spuer: ../ 와 같은 역할
crate: 현재 크레이트를 기준으로 절대 경로(crate가 최상위이므로)로 표현가능하다.