236
이펙티브 러스트
안 업데이트도 없을 가능성이 높다. 가령,
2
.
x
릴리스가 새로 출시됐을 때
"
1
.
4
"
같은 버전은
해결되지 않은 보안 문제를 가진 채 점점 더 뒤처지게 된다.
따라서 이전 버전에 갇히는 위험을 감수하거나 의존성을 메이저 버전에 맞게 업그레이드하거나
둘 중 하나를 선택해야 한다.
cargo
update
또는
Dependabot
(아이템
31
)과 같은 도구를 사
용하면 업데이트가 제공되는 시기를 알 수 있고, 원하는 시간에 업그레이드를 예약할 수 있다.
고찰
시맨틱 버저닝에는 비용이 발생한다. 크레이트에 대한 모든 변경 사항을 자체 기준에 따라 평
가해서 버전 올림 (버전 범프)
version
bump
유형을 잘 결정해야 한다. 시맨틱 버저닝은 무딘 도구
이기도 하다. 크레이트 소유자가 생각하기에 현재 릴리스가 세 가지 범주 중 어디에 속하는지
만 알려 줄 뿐이다. 항상 정확하게 표현할 수 없고, 정확하게 판단하기 힘든 경우도 있으며 설
사 정확하게 분류했더라도 하이럼의 법칙에 어긋날 가능성은 항상 존재한다.
하지만 고도로 테스트된 구글의 거대한 내부 모노레포
monorepo
와 같은 환경을 누릴 수 없는 이들
에게 주어진 의존성 관리 방법은 셈버밖에 없다. 따라서 의존성 관리를 위해서는 셈버의 개념
과 한계를 명확히 이해해야 한다.
아이템
22
: 가시성을 최소화하라
러스트에서는 가시성
visibility
을 조절하는 메커니즘을 통해 코드의 요소를 코드베이스에서 볼 수
있거나 없게 할 수 있다. 이번 아이템에서는 러스트에서 어떤 메커니즘을 ...