Rust

Rust 데이터 타입(Data Types)

초코민트냠냠 2022. 10. 11. 10:30
반응형

러스트의 데이터 타입은 크게 스칼라 타입(Scalar Types)과 복합 타입(Compound Types)으로 분류할 수 있습니다.

 

러스트는 타입이 고정된(statically tyled) 언어이기 때문에 컴파일 시점에 모든 데이터타입을 컴파일러에게 알려주어야 합니다.

 

스칼라 타입

스칼라 타입은 단순히 한 가지의 값을 가지고 있는 것입니다. Rust에는 정수, 부동소수점, booleans, 문자 이렇게 4가지의 기본 타입이 있습니다.

 

정수

러스트에서 정수는 128비트 정수까지 사용 가능합니다. isizeusize는 실행되는 컴퓨터 환경에 따라 결정됩니다.

정수

 

정수형 리터럴은 다음과 같이 작성 가능합니다.

 

부동소수점

러스트의 부동소수점은 f32f64 두가지의 크기로 사용할 수 있습니다. 기본 타입은 f64입니다.

f32타입은 1배수 정밀도, f64는 2배수 정밀도입니다.

 

let x = 1.0;       // f64
let y: f32 = 2.0   // f32

 

Boolean

다른 언어들처럼 true또는 false의 값을 가집니다. 타입명시는 :bool로 할 수 있습니다.

 

let t = true;
let f: bool = false

 

문자(char)

문자타입은 작은따옴표를 써서 표현합니다. (문자열은 큰따옴표를 씁니다.)

 

fn main() {
    let c = 'z';
    let z = 'ℤ';
    let heart_eyed_cat = '😻';
}

 

러스트의 char 타입은 4byte 크기입니다. 유니코드 스칼라 값을 표시하는데 ASCII보다 많은 값을 표현합니다. 유니코드 값의 범위는 U+0000 ~ U+D7FF, U+E000 ~ U+10FFF입니다.

 

복합타입

복합타입은 튜플(tuple)과 배열(array) 두 가지 기본 타입이 있습니다.

 

튜플 타입

튜플은 다양한 데이터타입을 묶어 하나의 복합 타입으로 만들 수 있습니다. 튜플은 고정된 길이를 가지기 때문에 길이를 늘리거나 줄일 수 없습니다.

 

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

 

또는 변수 위에 마침표(.)를 찍고 원하는 값의 인덱스를 써서 접근할 수도 있습니다.

 

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

 

배열 타입

배열은 튜블과 다르게 모두 같은 타입의 값들로 묶어야 합니다. 그리고 러스트의 배열은 튜플과 마찬가지로 고정된 길이를 가지기 때문에 길이를 늘리거나 줄일 수 없습니다.

 

대괄호 안에 값들을 나열해서 배열을 만듭니다.

 

fn main() {
    let a = [1, 2, 3, 4, 5];
}

 

let months = ["January", "February", "March", "April", "May", "June", "July",
              "August", "September", "October", "November", "December"];

 

대괄호 안에 원소의 타입과 개수를 명시할 수도 있습니다.

 

let a: [i32; 5] = [1, 2, 3, 4, 5];

 

또는 초기값과 개수를 대괄호 안에 작성하여 간단하게 쓸 수도 있습니다.

 

let a = [3; 5]; // let a = [3, 3, 3, 3, 3]과 같다

 

배열의 요소에 접근하려면 배열 이름 뒤에 대괄호를 붙이고 인덱스를 통해 접근할 수 있습니다.

 

fn main() {
    let a = [1, 2, 3, 4, 5];

    let first = a[0];
    let second = a[1];
}
반응형