리터럴
숫자 리터럴은 타입 이름을 접미사로 추가하여 타입 어노테이션을 할 수 있습니다. 예를 들어, 리터럴 42가 i32 타입을 가져야 함을 지정하려면 42i32라고 씁니다.
접미사가 없는 숫자 리터럴의 타입은 어떻게 사용되느냐에 따라 달라집니다. 아무런 제약이 없다면 컴파일러는 정수에 대해서는 i32를, 부동 소수점 숫자에 대해서는 f64를 사용합니다.
fn main() {
// 접미사가 붙은 리터럴은 초기화 시 그 타입을 알 수 있습니다.
let x = 1u8;
let y = 2u32;
let z = 3f32;
// 접미사가 없는 리터럴의 타입은 어떻게 사용되느냐에 따라 달라집니다.
let i = 1;
let f = 1.0;
// `size_of_val`은 변수의 크기를 바이트 단위로 반환합니다.
println!(`x`의 바이트 크기: {}, std::mem::size_of_val(&x));
println!(`y`의 바이트 크기: {}, std::mem::size_of_val(&y));
println!(`z`의 바이트 크기: {}, std::mem::size_of_val(&z));
println!(`i`의 바이트 크기: {}, std::mem::size_of_val(&i));
println!(`f`의 바이트 크기: {}, std::mem::size_of_val(&f));
}
앞선 코드에서 아직 설명되지 않은 몇 가지 개념이 사용되었습니다. 성급한 독자들을 위한 간단한 설명은 다음과 같습니다: