뉴타입
struct같은 내부 값이라도 섞이면 안 되는 의미를 컴파일러가 구분하게 합니다.
단위, ID, 공개 API 캡슐화처럼 새 타입 경계가 필요할 때.
이름을 새 타입으로 만들지, 별칭으로 줄일지, 반환하지 않는 흐름인지, 포인터 뒤의 동적 크기 값인지 먼저 구분합니다.
같은 내부 값이라도 섞이면 안 되는 의미를 컴파일러가 구분하게 합니다.
단위, ID, 공개 API 캡슐화처럼 새 타입 경계가 필요할 때.
기존 타입에 짧고 의미 있는 이름을 붙이지만 새 타입은 아닙니다.
긴 시그니처나 Result 반복을 줄이고 같은 타입으로 다뤄도 될 때.
값을 만들 수 없고, continue, panic, 무한 loop처럼 반환하지 않습니다.
어떤 분기가 끝까지 값을 내지 않아 다른 타입으로 강제될 때.
str이나 dyn Trait처럼 크기가 런타임 정보와 함께 결정됩니다.
&str, Box<dyn Trait>처럼 포인터와 메타데이터가 필요할 때.
값 혼용을 막아야 하면 뉴타입.
같은 타입이면 타입 별칭.
분기가 끝나지 않으면 !.
포인터 뒤에 DST를 둡니다.
참조와 T: ?Sized를 함께 씁니다.
핵심 구분은 새 타입 경계가 필요한지, 이름만 줄이면 되는지, 값이 반환되지 않는지, 크기 정보를 포인터가 들고 가야 하는지입니다.