Rust 기초부터 마스터까지 — 2화
변수, 타입, 함수, 패턴 매칭 익히기
본 블로그 작성 글들은, 강의를 목표로 하고 제작되었습니다. 또한 작성된 글의 정보도 틀렸을 수 있으니, 주의해주세요.
Rust는 변수의 타입과 값이 유효한 범위를 컴파일 단계에서 확인한다. 기본 문법부터 표현식과 패턴 매칭을 함께 이해하면 이후의 소유권 코드도 읽기 쉬워진다.
변수와 타입
let level: u32 = 10;
let speed = 4.5_f32;
let alive = true;
let mut health = 100;
health -= 20;
변수는 기본적으로 변경할 수 없고 mut를 붙여야 값을 바꿀 수 있다. 불변이 기본이면 어느 코드가 상태를 변경하는지 찾기 쉬워진다.
정수 타입은 크기와 부호가 정해져 있다. 다른 숫자 타입으로 바꿀 때는 as나 변환 함수를 사용해 의도를 드러내야 한다.
표현식
let state = if health <= 0 {
"Dead"
} else if health < 30 {
"Danger"
} else {
"Normal"
};
Rust의 if는 값을 반환하는 표현식으로 사용할 수 있다. 각 갈래가 반환하는 타입은 서로 같아야 한다.
세미콜론이 없으면 블록의 마지막 표현식이 반환값이 된다. 세미콜론을 붙이면 값이 없는 unit 타입이 된다.
match와 반복
let reward = match rank {
'S' => 1000,
'A' => 500,
_ => 100,
};
let mut total = 0;
for damage in [10, 20, 15] {
total += damage;
}
match는 가능한 경우를 빠뜨리지 않도록 검사한다. _는 앞에서 처리하지 않은 나머지 패턴이다.
함수
fn calculate_damage(attack: i32, defense: i32) -> i32 {
(attack - defense).max(1)
}
매개변수와 반환 타입은 명시하며 마지막 표현식이 결과가 된다. 함수는 단순히 코드를 줄이는 도구가 아니라 입력, 출력, 책임의 경계를 만드는 도구다.