| Length | Signed | Unsigned |
|---|---|---|
| 8bit | i8 | u8 |
| 16bit | i16 | u16 |
| 32bit | i32 | u32 |
| 64bit | i64 | u64 |
| 128bit | i128 | u128 |
| arch | isize | usize |
arch 타입은 컴퓨터의 아키텍처에 따라 다르며, 64비트 아키텍처에서는 64비트, 32비트 아키텍처에서는 32비트 입니다.
| Length | Signed |
|---|---|
| 32bit | f32 |
| 64bit | f64 |
기본 타입은 f64인데, 현대의 CPU에서 f32와 거의 같은 속도로 실행되지만 더 높은 정밀도를 제공하기 때문입니다. 모든 부동 소수점 타입은 부호가 있습니다.
let result = 1 + 2; // result는 3
let result = 5 - 2; // result는 3
let result = 4 * 3; // result는 12
let result = 8 / 3; // result는 2 (정수 나눗셈)
let float_result = 8.0 / 3.0; // float_result는 약 2.6667 (부동 소수점 나눗셈)
let result = 43 % 5; // result는 3
Rust의 Boolean 타입은 true와 false의 두 가지 가능한 값을 가집니다. Boolean은 1바이트 크기입니다. Rust에서 Boolean 타입은 bool을 사용하여 지정됩니다.
let f: bool = false; // 명시적 타입 주석과 함께
Rust의 char 타입은 이 언어에서 가장 기본적인 알파벳 타입입니다.Rust의 char 타입은 4바이트 크기이며 유니코드 스칼라 값(Unicode Scalar Value)을 나타냅니다.
fn main() {
let c = 'z';
let z: char = 'ℤ'; // with explicit type annotation
let heart_eyed_cat = '😻';
}
튜플은 다양한 타입의 여러 값을 하나의 복합 타입으로 묶는 일반적인 방법입니다. 튜플은 고정된 길이를 가지며, 한 번 선언되면 크기가 커지거나 작아질 수 없습니다.
fn main() {
let tup: (i32, f64, u8) = (500, 6.4, 1);
}
fn main() {
let tup = (500, 6.4, 1);
let (x, y, z) = tup;
println!("The value of y is: {y}");
}
튜플의 첫 번째 인덱스는 0입니다.
fn main() {
let x: (i32, f64, u8) = (500, 6.4, 1);
let five_hundred = x.0;
let six_point_four = x.1;
let one = x.2;
}
배열의 모든 요소는 동일한 타입을 가져야 합니다. Rust의 배열은 고정된 길이를 가집니다.
fn main() {
let a = [1, 2, 3, 4, 5];
}
배열의 타입을 작성할 때는 요소의 타입을 대괄호 안에 넣고 세미콜론을 찍은 다음 배열의 요소 수를 적습니다.
let a: [i32; 5] = [1, 2, 3, 4, 5];
아래는 let a = [3, 3, 3, 3, 3];라고 작성하는 것과 동일하지만 더 간결한 방법입니다.
let a = [3; 5];
fn main() {
let a = [1, 2, 3, 4, 5];
let first = a[0];
let second = a[1];
}
요소에 접근을 시도할 때, Rust는 지정한 인덱스가 배열 길이보다 작은지를 검사합니다. 인덱스가 배열 길이보다 크거나 같으면, Rust는 패닉 상태가 됩니다. 이러한 검사는 특히 이 경우처럼 컴파일러가 사용자가 나중에 코드를 실행할 때 어떤 값을 입력할지 알 수 없기 때문에 런타임에 이루어져야 합니다.