if-let
을 이용한 열거형 흐름 제어
let some_u8_value = Some(0u8);
if let Some(3) = some_u8_value {
println!("three");
}
- 어떤 값이 3일 때만 실행되는
if let
구문
let some_u8_value = Some(0u8);
match some_u8_value {
Some(3) => println!("three"),
_ => (),
}
- 어떤 값이 3일 때만 실행되는
match
구문
생각해볼 점
- 열거형의
variants
의 케이스별로 로직을 나누는 것이 아닌, 특정 경우에만 수행될 로직을 작성하고 나머지 로직에서는 별다른 처리가 일어나지 않길 원한다면if let
이 더 명확한 의도를 갖는 코드이다. - 다만,
if let
을 사용하면match
의 전수조사와 같은 성격이 없어지므로 실수하지 않도록 주의해야 한다. 상황에 맞는 키워드 사용이 중요하다. match
를 사용하는 게 실제 비즈니스 로직 집중에 방해를 일으킨다고 생각하면,if let
이 대안책이 될 수 있다.
if-let else
형태
let mut count = 0;
if let Coin::Quarter(state) = coin {
println!("State quarter from {:?}!", state);
} else {
count += 1;
}
let mut count = 0;
match coin {
Coin::Quarter(state) => println!("State quarter from {:?}!", state),
_ => count += 1,
}
- 나머지 경우를 깔끔하게 처리할 수 있다.
반응형
'러스트 (Rust)' 카테고리의 다른 글
러스트 (Rust) 열거형 2 - match 키워드 (0) | 2022.12.03 |
---|---|
러스트 (Rust) 열거형 1 - 기본 문법 (1) | 2022.12.03 |
러스트 (Rust) 메서드 (Method) 문법 (0) | 2022.11.03 |
러스트 (Rust) 구조체를 이용한 리팩토링 연습 (0) | 2022.11.03 |
러스트 (Rust) 구조체 정의하고 생성하는 방법 (0) | 2022.11.03 |