유닛 (Unit) 타입
이 포스트는 Rust를 처음 공부하면서 정리한 내용입니다. 해당 포스트는 개인적으로 기억하기 위한 메모 성격에 가깝습니다. “러스트 프로그래밍 공식 가이드 (2018, 제이펍)” 서적을 참고하였으며, 러스트 공식 사이트 에서 책과 동일한 내용을 찾을 수 있습니다. 따라서 더 자세한 내용을 찾으시면 위의 링크를 참고하시면 좋습니다.
Unit 타입 이란?
이전 포스트에서 match 에서 _ 자리지정자는 명시되지 않은 경우의 수를 나타냈습니다. 이때 사용한 () 은 유닛값으로, 이에 해당하는 경우는 아무런 일도 일어나지 않습니다.
let some_u8_value: u8 = 0u8;
match some_u8_value {
1 => println!("one"),
3 => println!("three"),
5 => println!("five"),
7 => println!("seven"),
_ => (),
}
유닛값이 무엇인지 궁금하여 공식 문서를 참고하여 정리해보겠습니다.
유닛(Unit)이란 Rust에서 지원하는 기본 타입(Primitive Type)입니다. ()
타입은 정확히 ()
라는 하나의 값을 가지게 되고, 반환할 수 있는 다른 의미 있는 값이 없을 때 사용됩니다.
함수 리턴 타입
우선 함수에서 유닛 타입은 암묵적인 리턴 타입입니다. a -> ...
이 없는 함수는 암묵적으로 반환 타입은 ()
타입이 됩니다. 즉, 아래의 두 함수는 동일합니다.
// Equivalent return type.
fn long() -> () {}
fn short() {}
또는,
fn returns_i64() -> i64 {
1i64
}
fn returns_unit() {
1i64;
}
let is_i64 = {
returns_i64()
};
let is_unit = {
returns_i64();
};
와 동일합니다. 표현식과 관련된 리턴 값에 대한 내용은 [Rust]함수에서 확인할 수 있습니다.