Rust · advanced types

고급 타입 선택 기준표

이름을 새 타입으로 만들지, 별칭으로 줄일지, 반환하지 않는 흐름인지, 포인터 뒤의 동적 크기 값인지 먼저 구분합니다.

안전성 가독성 크기

뉴타입

struct

같은 내부 값이라도 섞이면 안 되는 의미를 컴파일러가 구분하게 합니다.

Newtype 경계 필요 조건

단위, ID, 공개 API 캡슐화처럼 새 타입 경계가 필요할 때.

타입 별칭

type

기존 타입에 짧고 의미 있는 이름을 붙이지만 새 타입은 아닙니다.

Type Alias 축약 조건

긴 시그니처나 Result 반복을 줄이고 같은 타입으로 다뤄도 될 때.

never type

!

값을 만들 수 없고, continue, panic, 무한 loop처럼 반환하지 않습니다.

never 타입 분기 조건

어떤 분기가 끝까지 값을 내지 않아 다른 타입으로 강제될 때.

DST와 trait object

?Sized

str이나 dyn Trait처럼 크기가 런타임 정보와 함께 결정됩니다.

DST 포인터 메타데이터 조건

&str, Box<dyn Trait>처럼 포인터와 메타데이터가 필요할 때.

결정 흐름

의미 분리 여부

값 혼용을 막아야 하면 뉴타입.

반복 축약 여부

같은 타입이면 타입 별칭.

반환 없음 여부

분기가 끝나지 않으면 !.

크기 미정 여부

포인터 뒤에 DST를 둡니다.

제네릭 완화 여부

참조와 T: ?Sized를 함께 씁니다.

핵심 구분은 새 타입 경계가 필요한지, 이름만 줄이면 되는지, 값이 반환되지 않는지, 크기 정보를 포인터가 들고 가야 하는지입니다.