최재영의 개발 일지
GitHubLinkedIn

데이터 타입

Rust1분 읽기

데이터 타입

러스트는 정적 타입의 언어이다. 따라서 모든 변수의 타입이 컴파일 시점에 반드시 정해져 있어야 한다.

러스트의 기본 데이터 타입 종류는 다음과 같다.

  • 스칼라 타입
    • 정수
    • 부동 소수점
    • 불리언
    • 문자
  • 복합 타입
    • 튜플
    • 배열
    • 슬라이스

스칼라 타입

스칼라 타입은 하나의 값을 표현한다.

정수

SizeSignedUnsigned
8-biti8u8
16-biti16u16
32-biti32u32
64-biti64u64
128-biti128u128
archisizeusize

isizeusize는 컴퓨터 환경에 따라 달라진다. 64-bit 아키텍처에서는 64비트로, 32-bit 아키텍처에서는 32비트로 결정된다.

정수형 리터럴은 10진수, 16진수, 8진수, 2진수, 문자를 지원한다.

리터럴예시
Decimal98_222
Hex0xff
Octal0o77
Binary0b1111_0000
Byte(u8 only)b'A'

참고

  • 숫자 리터럴 뒤에 타입 접미사를 사용하여 타입을 지정할 수 있다. (300u16)
  • 정수는 읽기 쉽게 하기 위해 _를 컴마처럼 사용할 수 있다. (1000000 = 1_000_000)

부동 소수점

부동 소수점은 32-bit인 f32와 64-bit인 f64가 있다.

불리언

불리언 타입은 bool이다. truefalse 두 값만 가진다. 크기는 1바이트이다.

문자

4바이트 크기인 char이다. 작은 따옴표로 표현한다. 러스트의 char는 ASCII보다 더 많은 값을 표현한다.

복합 타입

복합 타입은 여러 값이 하나의 타입으로 묶인 것이다.

튜플

튜플은 다양한 타입의 값을 여러 개 묶어 하나의 타입으로 만든 것이다. 고정된 길이와 타입을 갖는다.

튜플 타입은 괄호 안에 여러 타입을 쉼표로 구분하여 만든다.

let tup: (i32, f64, u8) = (500, 6.4, 1);

튜플의 값은 쉽게 해체할 수 있다.

let tup: (i32, f64, u8) = (500, 6.4, 1);

let (x, y, z) = tup;

. 뒤에 인덱스를 입력하여 튜플 요소에 접근할 수 있다.

let x: (i32, f64, u8) = (500, 6.4, 1);

let n = x.0;
let d = x.1;
let b = x.2;

아무 값도 없는 튜플은 유닛(unit)이라는 특별한 이름을 갖는다. 이 값과 타입은 모두 ()로 작성된다. 표현식이 어떤 값도 반환하지 않는다면 암묵적으로 유닛 값을 반환한다.

배열

배열은 같은 타입의 값을 여러 개 묶어 하나의 타입으로 만든 것이다. 러스트의 배열은 고정된 길이를 갖는다.

대괄호 안에 쉼표로 구분한 값들을 나열하여 배열을 만들 수 있다. 배열의 타입은 [요소 타입; 요소 개수] 형식으로 작성한다.

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

초깃값과 배열 길이를 입력하여 모든 요소가 동일한 배열을 생성할 수 있다.

let a = [3; 5]; // [3, 3, 3, 3, 3]

요소에 접근할 때는 대괄호에 인덱스를 입력한다.

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

let first = a[0];
let second = a[1];

유효하지 않은 인덱스를 입력하면 런타임 에러가 발생한다.

thread 'main' panicked at 'index out of bounds: the len is 5 but the index is 10', src/main.rs:19:19
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace