Rust Data Types

이승훈·2024년 4월 21일

Data Types

Scalar Types

Integer Types

LengthSignedUnsigned
8biti8u8
16biti16u16
32biti32u32
64biti64u64
128biti128u128
archisizeusize

arch 타입은 컴퓨터의 아키텍처에 따라 다르며, 64비트 아키텍처에서는 64비트, 32비트 아키텍처에서는 32비트 입니다.

Floating-Point Types

LengthSigned
32bitf32
64bitf64

기본 타입은 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

The Boolean Type

Rust의 Boolean 타입은 true와 false의 두 가지 가능한 값을 가집니다. Boolean은 1바이트 크기입니다. Rust에서 Boolean 타입은 bool을 사용하여 지정됩니다.

let f: bool = false; // 명시적 타입 주석과 함께

The Character Type

Rust의 char 타입은 이 언어에서 가장 기본적인 알파벳 타입입니다.Rust의 char 타입은 4바이트 크기이며 유니코드 스칼라 값(Unicode Scalar Value)을 나타냅니다.

fn main() {
    let c = 'z';
    let z: char = 'ℤ'; // with explicit type annotation
    let heart_eyed_cat = '😻';
}

Compound Types

The Tuple Type

튜플은 다양한 타입의 여러 값을 하나의 복합 타입으로 묶는 일반적인 방법입니다. 튜플은 고정된 길이를 가지며, 한 번 선언되면 크기가 커지거나 작아질 수 없습니다.

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;
}

The Array Type

배열의 모든 요소는 동일한 타입을 가져야 합니다. 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는 패닉 상태가 됩니다. 이러한 검사는 특히 이 경우처럼 컴파일러가 사용자가 나중에 코드를 실행할 때 어떤 값을 입력할지 알 수 없기 때문에 런타임에 이루어져야 합니다.

profile
안녕하세요!

0개의 댓글