타입 별칭
type
구문으로 기존 타입에 새로운 이름을 지어줄 수도 있습니다.
타입명은 반드시 대문자 낙타 표기법(UpperCamelCase
)을 따라야 하며, 따르지 않을 경우 컴파일러 경고가 발생합니다.
단, usize
, f32
등 기본 타입은 이 규칙에서 예외입니다.
// `NanoSecond`는 `u64`의 새로운 별칭입니다. type NanoSecond = u64; type Inch = u64; // 속성을 사용해 경고를 무시합니다 #[allow(non_camel_case_types)] type u64_t = u64; // TODO ^ 속성을 제거해보세요 fn main() { // `NanoSecond` = `Inch` = `u64_t` = `u64`. let nanoseconds: NanoSecond = 5 as u64_t; let inches: Inch = 2 as u64_t; // 타입 별칭이 추가적인 타입 안정성을 제공하지는 *않는다는* 점을 알아두세요. // 별칭일 뿐 새로운 타입이 *아닙니다* println!("{} nanoseconds + {} inches = {} unit?", nanoseconds, inches, nanoseconds + inches); }
타입 별칭은 주로 보일러플레이트를 줄이기 위해 사용됩니다.
예를 들어, IoResult<T>
타입은 Result<T, IoError>
라는 긴 타입의 별칭입니다.