if 는 expression 이며 condition에 따라 알맞은 브랜치로 로직을 이동시킨ㄴ다.
fn main() {
let number = 3;
if number < 5 {
println!("condition was true");
} else {
println!("condition was false");
}
}
Rust
복사
if expression의 조건과 관련된 코드 블록을 arms 라고도 불린다.
if 뒤에 바로 condition이 오고, 이 condition은 bool 이어야 한다.
fn main() {
let number = 3;
if number {
println!("number was three");
}
}
Rust
복사
이런 경우는 에러를 반환한다.
Multiple if는 아래와 같다.
fn main() {
let number = 6;
if number % 4 == 0 {
println!("number is divisible by 4");
} else if number % 3 == 0 {
println!("number is divisible by 3");
} else if number % 2 == 0 {
println!("number is divisible by 2");
} else {
println!("number is not divisible by 4, 3, or 2");
}
}
Rust
복사
if 를 let statement에서 쓰는 경우
fn main() {
let condition = true;
let number = if condition { 5 } else { 6 };
println!("The value of number is: {number}");
}
Rust
복사
Kotlin과 분위기가 비슷하다.
중요한 것은 if 문 뒤에 코드 블록의 expression의 type이 모두 일치해야 한다. 예를들어 다음과 같은 코드는 compile 에러를 반환한다.
fn main() {
let condition = true;
let number = if condition { 5 } else { "six" };
println!("The value of number is: {number}");
}
Rust
복사
변수는 반드시 single type 이어야 한다.
Rust에선 compile time 에 variable의 정체를 알아낸다. 이러한 내용을 runtime에 알게된다면 더욱 복잡해지고 언어가 보장해주는 영역이 줄어들게 된다.