[Rust]

[Rust] 데이터 타입

극꼼 2023. 7. 18. 23:47
반응형


Rust에서 사용되는 모든 값들은 타입을 가지며, 반드시 컴파일 시에 정해져있어야 합니다.

let guess = "42".parse().expect("Not a number");

위와 같이 코드를 입력하면 타입 명시를 하지 않았다는 에러(consider giving 'guess' a type)가 뜹니다. 따라서 다음과 같이 타입을 명시하여 코드를 입력해주어야 합니다.

let guess: u32 = "42".parse().expect("Not a number");
// u32는 부호가 없는 32비트의 변수

[스칼라 타입]

스칼라는 하나의 값으로 표현되는 타입으로, Rust는 정수형, 부동소수점 숫자, boolean, 문자 4가지 스칼라 타입을 가지고 있습니다.

1) 정수형 : signed는 부호가 있는 타입, unsigned는 부호가 없는 타입. 확실하게 정해진 타입이 없다면 i32를 사용하는게 가장 빠르기 때문에 일반적입니다.

* 정수형 리터럴 : 0x, 0o, 0b 접두사로 진법 지정하는 것이 가능하고, _ (underscore)로 let million = 1_000_000; 같이 표현 가능

 

2) 부동 소수점 타입 : Rust의 부동소수점 타입은 f32, f64가 있고 각자 32, 64bit의 크기를 가집니다. 기본 타입은 f64로, 최신 CPU에서 더 정밀한 표현이 가능합니다.

fn main() {
    let x = 2.0; // f64

    let y: f32 = 3.0; // f32
}

 

3) boolean(bool) : Rust에서 true, false 중 한 가지 값만 가질 수 있습니다.

 

4) 문자 타입 : char, String

Rust의 char는 Unicode Scalar를 표현하고 있는 값입니다.

 

[복합 타입]

: 복합 타입들은 다른 타입의 값들을 하나의 타입으로 묶을 수 있습니다. Rust는 튜플, 배열 2개의 기본 타입을 가지고 있습니다.

1) 튜플 : 다양한 타입을 집합으로 만들어 복합적인 타입으로 만드는 방법

let tup: (i32, f64, u8) = (500, 6.4, 1);
let (x, y, z) = tup; // = 구조 해체

튜플의 각각의 값은 index로 접근할 수 있습니다.

let five_hundred = x.0;
let six_point_four = x.1;
let one = x.2;

 

2) 배열 : 배열은 튜플과 다르게 모든 값이 같은 타입이어야 합니다. Rust에서는 다음과 같이 대괄호 안에 값을 나열하여 배열을 만듭니다.

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

데이터를 heap보다 stack에 할당하길 원하거나, 고정된 숫자 값을 원할 때 유용합니다.


요약에 사용된 참조 : https://rinthel.github.io/rust-lang-book-ko/ch03-02-data-types.html

반응형

'[Rust]' 카테고리의 다른 글

[Rust] 소유권  (0) 2023.07.25
[Rust] 제어문  (0) 2023.07.20
[Rust] 함수 동작 원리  (0) 2023.07.19
[Rust] 변수와 가변성  (0) 2023.07.17
[Rust] cargo  (0) 2023.07.16