
248
이펙티브 러스트
이렇게 하면 호출하는 측의 코드에서는
dep
_
lib
::
rand
를 이용해
0
.
7
버전의
rand
를 직접 참
조하는 다른 방법을 갖게 된다.
let mut prev_rng = dep_lib::rand::thread_rng(); // v0.7 Rng 인스턴스
let choice = dep_lib::pick_number_with(&mut prev_rng, max);
이 예제를 이해했다면 이번 아이템의 제목인 ‘
API
에 타입으로 나오는 의존성을 다시 익스포트
하라’는 조언이 조금씩 이해될 것이다.
아이템
25
: 의존성 그래프를 관리하라
대부분의 최신 프로그래밍 언어와 마찬가지로 러스트도 외부 라이브러리를 쉽게 가져오는 메
커니즘을 제공한다. 러스트는 이 기능을 크레이트 형태로 제공한다. 어느 정도 규모 있는 러스
트 프로그램이라면 대부분 외부 크레이트를 사용한다. 이런 크레이트 역시 나름대로 의존성을
가진 경우가 많아서 프로그램 전체로 보면
의존성 그래프
dependency
graph
를 형성하게 된다.
카고는 기본적으로
Cargo
.
toml
파일의
[
dependencies
]
부분에 명시된 크레이트를 모두
crates
.
io
에서 다운로드한 뒤,
Cargo
.
toml
에 명시된 요구 사항과 일치하는 크레이트 버전
을 찾는다.
이 간단한 문장 안에는 몇 가지 주의 ...