타입

C언어 계열과 마찬가지로, Rust는 타입이 존재합니다. 러스트의 원시 타입(primitive type) 목록은 다음과 같습니다.

이름타입
8비트 정수i8
16비트 정수i16
32비트 정수i32
64비트 정수i64
128비트 정수i128
아키텍처isize
부호 없는 8비트 정수u8
부호 없는 16비트 정수u16
부호 없는 32비트 정수u32
부호 없는 64비트 정수u64
부호 없는 128비트 정수u128
부호 없는 아키텍처usize
불리언bool
문자열String
문자열 슬라이스str
32비트 부동소수점 실수f32
64비트 부동소수점 실수f64

isizeusize 는 컴퓨터 아키텍처가 32비트인지 64비트인지에 따라서 값이 달라지는 기본 포인터 크기입니다.

타입 추론

러스트 코드를 작성할 때 대부분의 경우에는 개발자가 변수에 타입을 지정하지 않아도 앞에서 설치한 rust-analyzer가 알아서 타입을 추론(inference)해서 화면에 보여줍니다. 비슷한 원리로 코드가 컴파일될 때에는 컴파일러가 타입을 추론해서 변수를 선언하게 됩니다. 이때, 추측되는 타입의 기본값은 정수형은 i32 , 실수형은 f64 입니다.

다음 코드를 VSCode에 붙여넣으면 아래 그림과 같이 타입이 추론되는 것을 볼 수 있습니다.

fn main(){
    let x = 1;
    let y = 1.0;
    println!("{} {}", x, y);
}
ch02-3

마찬가지로 이 상태로도 컴파일이 잘 실행되고, 컴파일러가 각 변수를 i32f64 로 추측해서 컴파일합니다.

실행결과

1 1

타입 캐스팅

변수의 타입을 다른 타입으로 바꾸는 타입 변환(Casting)도 가능합니다. 파이썬에서는 타입 이름을 바로 사용해 타입 변환을 수행합니다.

x = 1.2
y = int(x)
print(f"{x} -> {y}");

실행결과

1.2 -> 1

러스트에서는 아래와 같이 as 키워드를 사용하면 됩니다. 예제에서는 64비트 실수 f64 로 선언된 변수 x 의 값을 32비트 정수 i32 로 변환해 y 변수에 할당하고 있습니다. 실수에서 정수로 변환했기 때문에 값이 1.2에서 1로 변경됩니다.

fn main() {
    let x: f64 = 1.2;
    let y = x as i32;
    println!("{} -> {}", x, y);
}

실행결과

1.2 -> 1