Rust의 기본 데이터 타입은 크게 Scala 타입과 Compound 타입으로 이루어져 있다.
Scala 타입은 하나의 값만을 가지며, Compound 타입은 여러 개의 값을 가진다.
Scala 타입
정수형, 실수형, 불(Bool)형, 문자(char)형이 있다.
분류 | 표현 | 크기(byte) | |
정수형 | 부호 있는 | i8 | 1 |
i16 | 2 | ||
i32 | 4 | ||
i64 | 8 | ||
i128 | 16 | ||
isize | 아키텍쳐 32bit => 4 64bit => 8 |
||
부호 없는 | u8 | 1 | |
u16 | 2 | ||
u32 | 4 | ||
u64 | 8 | ||
u128 | 16 | ||
usize | 아키텍쳐 32bit => 4 64bit => 8 |
||
실수형 | f32 | 4 | |
f64 | 8 | ||
불형 | bool | 1 (1바이트다!) | |
문자형 | char | 4 (유니코드 지원) |
정수형의 표현 방식
fn main() {
let decimal1 = 98_222;
let decimal2 = 12345;
let hex = 0xff;
let octal = 0o77;
let binary = 0b111;
let byte = b'A';
println!("{}", decimal1);
println!("{}", decimal2);
println!("{}", hex);
println!("{}", octal);
println!("{}", binary);
println!("{}", byte);
}
rust는 특이하게도 바이너리까지도 지원한다.
또한, 숫자 사이사이에 _ (Underscore)를 넣을 수 있는데, 1_2_3___344 이렇게 넣어도 에러가 발생하지 않고 정상 동작한다.
숫자 3개마다 , (comma)를 찍는 것처럼 사용해도 되고, 어떻게 사용하는지는 개발자에게 달렸다.
기타 표현방식
실수형은 123.23처럼 . (dot) 을 사용하고,
불형은 true, false,
문자형은 '𝄞' 처럼 작은따옴표 사이에 Unicode를 넣으면 된다.
정수형 특징
Rust는 정수형을 쓸 때, 참 좋은 특징이 있다.
fn main() {
let x: u8 = 250 + 250;
println!("{}", x);
}
위 같은 경우, 다른 언어들은 대부분 오버플로 문제가 예견되어도 빌드도 되고, 실행도 된다.
error: this arithmetic operation will overflow
--> src/main.rs:2:17
|
2 | let x: u8 = 250 + 250;
| ^^^^^^^^^ attempt to compute `250_u8 + 250_u8`, which would overflow
|
= note: `#[deny(arithmetic_overflow)]` on by default
error: aborting due to previous error
아주 좋다.
Rust는 overflow가 발생한다고, 컴파일 과정에서 알려준다.
Compund 타입
튜플과 배열, 두 가지가 있다.
튜플(Tuple)
크기가 고정된 타입으로, 각 요소의 타입이 일치할 필요가 없다.
튜플을 선언하기 위해서는 소괄호를 사용하며, 각 요소를 구분하기 위해 , (comma)를 사용한다.
fn main() {
let tup = ("asdf", 6.4, 123);
println!("{:?}", tup);
println!("{}", tup.0);
let (_a, b, _c) = tup;
println!("{}", b);
}
튜플에서 특정 요소에 접근하기 위해서는 .0, .2 처럼 점과 숫자를 통해서 접근할 수 있다.
또한, 두 번째 let처럼 uncoupling이 가능하다.
배열(Array)
Tuple과 마찬가지로 크기가 고정된 타입이다.
하지만 각 요소의 타입은 같아야 한다.
배열을 선언하기 위해서는 대괄호를 사용하며, 각 요소를 구분하기 위해 , (comma)를 사용한다.
fn main() {
let arr = [1, 2, 3, 4, 5];
println!("{:?}", arr );
println!("{}" , arr[3]);
}
각 요소에 접근하기 위해서는 [3] 과 같이 대괄호와 숫자를 이용한다.
'잡학(雜學)' 카테고리의 다른 글
Centos 7 잡학 (0) | 2021.07.20 |
---|---|
Rust 2장 - 3. 문자열 (0) | 2021.06.24 |
Rust 2장 - 1. 변수와 상수 (0) | 2021.06.15 |
억지 기법 (0) | 2021.06.13 |
Rust 1장. Hello World! (0) | 2021.06.12 |