목차
- immutable variable ( 불변 변수 )
- const vs immutable ( 상수 vs 불변 변수 )
- Type annotation ( 타입 부연 설명 )
- Data type ( 데이터 타입 )
immutable variable ( 불변 변수 )
먼저 다른 언어와의 차이점을 보겠습니다.
변수 | Rust | C | Java | Python |
언어타입 | 정적 | 정적 | 정적 | 동적 |
선언식별자 | let | int, void 등 | int, void 등 | 없음 |
Default | immutable(불변) | mutable(가변) | mutable(가변) | mutable(가변) |
상수식별자 | const | const | final | 없음 |
※ 정적 타입 언어 : 컴파일 시 변수 타입이 정해져야 함.
※ 동적 타입 언어 : 런타임 동안 변수 타입이 정해짐.
let 식별자로 변수를 선언하면, Rust 컴파일러가 데이터 타입 추론을 통해 변수 타입을 결정합니다.
mutable variable( 가변 변수 )를 선언하려면 mut 식별자를 같이 사용해야 합니다.


const vs immutable ( 상수 vs 불변 변수 )
1. 변수 재정의와 shadowing
사실, immutable variable은 변수를 재정의 함으로써 새로운 값을 할당받을 수 있습니다.
재정의 하는 과정에서 이전의 값이 다음 값에 의해 가려지는 것을 shadowing이라 합니다.

2. const는 지역 내에서 같은 이름으로 한 번만 정의 가능. (재정의 불가)
3. const는 전역/지역 정의가 모두 가능. let은 지역만 가능.
4. const는 mut 식별자 사용 불가.
5. const는 타입 부연설명을 명시해야 함.
6. const는 함수의 반환 값 등 런타임 동안에 계산되는 값으로 정의할 수 없음.

Type annotation ( 타입 부연설명 )
일반적으로 Rust 컴파일러가 데이터 타입 추론을 통해 변수 타입을 결정하지만, 종종 명확히 판단을 내리지 못해 프로그래머가 직접 타입 부연설명을 해주어야 합니다.


parse() 함수는 여러 가지 숫자 타입 반환 값을 가질 수 있으므로 타입 부연설명을 해주어야 합니다.

Data Type ( 데이터 타입)
- Integer Type ( 정수형 )
- Floating-point Type ( 실수형 )
- Boolean Type ( 참/거짓 형 )
- Character Type ( 문자형 )
- Tuple Type ( 튜플 )
- Array Type ( 배열 )
* Scalar Types
Integer Types ( 정수형 )
Length | Signed | Unsigned |
8-bit | i8 | u8 |
16-bit | i16 | u16 |
32-bit | i32(default) | u32 |
64-bit | i64 | u64 |
128-bit | i128 | u128 |
arch | isize | usize |
Number literals | Example |
Decimal | 98_222 |
Hex | 0xff |
Octal | 0o77 |
Binary | 0b1111_0000 |
Byte (u8 only) | b'A' |
※ 98_222는 98,222와 같은 의미
※ release mode 컴파일 시 integer overflow 확인불가.
Floating-point Types ( 실수형 ) : f32, f64(default)


Boolean Type ( 참/거짓 ) : 1 Byte, bool

Character Type ( 문자형 ) : 4 Byte, Unicode, 홑 따옴표 사용


* Compound Types
Tuple Type ( 튜플 ) : 고정된 길이

Arrray Type ( 배열 ) : 고정된 길이

런타임 도중 배열의 길이를 초과하는 입력을 받아 배열 원소에 접근한다면?
=> Rust 에서는 배열 원소에 접근할 때, 프로그래머가 접근한 인덱스와 실제 배열 길이를 비교하여 접근한 인덱스가 실제 배열의 길이보다 작은지 확인합니다. 배열 길이를 초과한다면, 에러 메시지와 함께 프로그램이 종료됩니다. (Rust's safty principles)
공식 도서
https://doc.rust-lang.org/book/
공식 도서 번역본
https://rinthel.github.io/rust-lang-book-ko/
Rust by Example
https://doc.rust-lang.org/stable/rust-by-example/index.html
오늘은 Rust 변수, 상수, 데이터 타입에 대해 정리해보았습니다.
저도 정리하면서 공부할 수 있는 좋은 시간이었습니다.
여러분께도 조금이나마 도움이 되었으면 좋겠습니다.
감사합니다.
* 피드백은 댓글로 남겨주세요 *
'Rust' 카테고리의 다른 글
[example] Rust 표준입력, 한줄로 받은 입력 나누기 (1) | 2021.06.20 |
---|---|
Rust 메모리관리와 Ownership (0) | 2021.06.16 |
Rust 함수, 제어문 (0) | 2021.06.15 |
Rust 프로젝트, 컴파일, 빌드, 릴리즈 (0) | 2021.06.12 |
Rust 개발환경 구축하기 (0) | 2021.06.11 |