Rust는 “안전성·성능·생산성” 세 마리 토끼를 잡은 언어입니다. 오늘은 그 첫 관문인 Rust 변수와 Rust 데이터 타입, 그리고 Rust 연산자를 마스터해 보죠. 이 3가지만 익혀도 Rust 선언과 간단한 함수 호출 정도는 거뜬히 구현할 수 있습니다.
3-1. 변수와 가변성(let
vs let mut
)
불변이 기본, 필요할 때만 mut !
Rust 변수는 기본적으로 불변(immutable)이며 let x = 5;
처럼 선언합니다. 값을 바꿔야 할 땐 mut
키워드를 넣어 let mut x = 5;
처럼 가변성을 명시합니다. 이는 “이 변수는 어디선가 변경될 수 있다”는 의도를 코드에 문서화하여 버그를 예방하지요.
섀도잉(Shadowing)
같은 이름을 다시 let
으로 선언해 값을 “겹쳐쓰기” 하면 새로운 타입·값을 안전하게 덮어쓸 수 있습니다.
let spaces = " "; // &str
let spaces = spaces.len(); // 이제 spaces는 usize
println!("공백 길이 = {spaces}");
실습: 가변 변수 데모
let mut counter = 0;
counter += 1; // += 는 복합 대입 연산자
println!("counter = {counter}");
3-2. 데이터 타입(숫자·불리언·문자·문자열)
① 스칼라(Scalar) 타입
- 정수-타입:
i8 .. i128
,u8 .. u128
– 부호·크기별 선택. - 부동소수:
f32
,f64
– 기본은f64
. - 불리언:
bool
–true/false
값. - 문자:
char
– 유니코드 스칼라 값 한 글자.
② 문자열(String) 타입
Rust에는 고정 길이 &str
(문자열 슬라이스) 와 가변 길이 String
(힙 할당) 두 종류가 있습니다.
let s_slice: &str = "Rust";
let mut s_owned = String::from("Rust");
s_owned.push('🦀');
③ 리터럴과 가독성
숫자 리터럴 사이에 밑줄을 넣어 1_000
-> 1000
처럼 읽기 좋게 쓸 수 있습니다.
3-3. 기본 연산자 사용법
산술 · 대입 연산자
+
-
*
/
%
는 숫자 산술, +=
*=
등은 복합 대입에 쓰입니다. 부동소수 연산은 IEEE-754 규격(f32/f64
)을 따릅니다.
비교 연산자
< > <= >= == !=
모두 bool
값을 반환하며, 문자열과 char
도 사전식으로 비교됩니다.
논리 연산자
&& || !
&&
와 ||
는 단락(short-circuit) 평가를 지원해 왼쪽 피연산자 값으로 결과가 이미 결정되면 오른쪽을 평가하지 않습니다.
연산자 우선순위 & 괄호
수학적 우선순위 (*
//
> +
/-
)를 따르며, 헷갈릴 땐 괄호를 사용해 명확히 하세요.
3-4. 실습: 모든 개념을 합친 미니 계산기
fn main() {
// 1) 변수·가변성
let mut total: i32 = 0;
// 2) 숫자·문자열·연산자 사용
let input = "15";
total += input.parse::().unwrap(); // 문자열 → 숫자
total *= 2; // 곱셈
// 3) 불리언 비교
let is_even: bool = total % 2 == 0;
println!("total = {total}, 짝수인가? {is_even}");
}
출력 결과
total = 30, 짝수인가? true
3-5. 오늘 배운 것 정리
- Rust 변수는 기본 불변, 변경 시
let mut
사용 - 스칼라 4종(정수·부동소수·불리언·문자) + 문자열 2종(&str/String)
- 산술·복합 대입·비교·논리 연산자와 단락 평가
다음 4장에서는 Rust if / Rust else 조건문, Rust loop·Rust while·Rust for 반복문, 그리고 강력한 Rust match 패턴 매칭으로 코드의 묘미를 느껴보겠습니다. 고지가 코앞입니다!
'08.개발&프로그래밍 > 4.Rust(러스트)' 카테고리의 다른 글
6장: 함수와 모듈로 코드 구조화하기 (0) | 2025.07.28 |
---|---|
5장: 소유권(Ownership)과 빌림(Borrowing) (0) | 2025.07.28 |
4장: 제어 흐름 다지기 (0) | 2025.07.28 |
2장: Rust 개발 환경 준비하기 (0) | 2025.07.28 |
1장. Rust 입문: 메모리 안전성과 성능을 한 번에 잡는 첫걸음 (0) | 2025.07.28 |