Rust 데이타 타입 (Compound)

Rust 데이타 타입 (2)

Rust에는 단일 값을 나타내는 스칼라 타입(Scalar Type)과 여러 값들로 구성된 복합 타입(Compound Type)이 있다. 앞에 이어 여기서는 복합 타입(Compound Type)에 대해 알아본다.

복합 타입

복합 타입(compound type)은 여러개의 값들로 구성된 타입을 의미하는데, 이러한 타입으로 Rust에는 배열(Array)과 튜플(Tuple)이 있다.

배열

배열(array)은 동일한 데이타 타입을 갖는 요소들의 집합으로서, 고정된 길이를 갖는다. 아래 튜플은 각 요소마다 데이타 타입이 다를 수 있지만, 배열은 동일한 데이타 타입만을 갖는다. Rust에서 배열은 스택(stack)에 할당된다.

배열 타입을 정의하기 위해서는 [i32; 3] 와 같이 사각괄호 안에 배열요소의 데이타 타입과 세미콜론 그리고 배열 길이를 지정하면 된다. 배열값들은 [1,2,3] 과 같이 사각괄호 안에 콤마로 분리하여 지정한다.

let arr: [i32; 3] = [1, 2, 3];   // 3개의 정수배열 

println!("{}", arr[0]);   // 배열 첫번째 요소 출력

println!("{:?}", arr);    // 배열전체를 출력

배열의 요소를 읽기 위해서는 첫번째 요소는 arr[0], 두번째 요소는 arr[1] 등과 같이 읽는다. 배열 전체를 출력하기 위해서는 포맷팅에서 {} 대신 {:?} 을 사용한다.

참고로, 배열값을 지정할 때, [1; 100] 과 같이 세미콜론을 사용하면, 이는 [1, 1, ..., 1] 와 같이 1을 100개 지정하는 것과 같은 표현이다.

튜플

튜플(tuple)은 여러 데이타 타입의 값들을 하나로 묶은 것으로, ( ) 와 같은 괄호를 사용하고 각 타입이나 값들을 콤마로 분리한다. 일단 튜플이 한번 정의되면, 새로운 요소를 추가하거나 기존 요소를 삭제할 수 없다. 아래 예제에서 변수 dat는 3개의 타입(i32, char, bool)의 값들을 순서대로 갖는 튜플이고, 변수 usr는 2개의 타입(문자열과 문자 타입)을 갖는 튜플이다.

let dat: (i32, char, bool) = (1, 'A', true);
let usr = ("Tom", 'B');

튜플에서 값을 읽어 내기 위해서는, 첫번째 값은 {변수명}.0 으로, 두번째 값은 {변수명}.1 와 같은 방식으로 읽어 낼 수 있다.

let dat: (i32, char, bool) = (1, 'A', true);
let a = dat.0;
let b: char = dat.1;
let c: bool = dat.2;

튜플에 값을 읽는 또다른 방식으로, 튜플 전체를 읽어 여러 변수들에 나누어 할당하는 방식이 있는데, 이를 Destructuring 이라 부른다. 예를 들어, 위의 dat 튜플은 다음과 같이 Destructuring 할 수 있다.

let dat: (i32, char, bool) = (1, 'A', true);
let (a, b, c) = dat;

This site is not affiliated with or endorsed by the Rust Foundation or Rust Project.