Destructuring Enums
구조체의 바인딩된 값을 패턴으로 사용할 수 있습니다. 간단한 enum 타입의 예시입니다:
Patterns can also be used to bind variables to parts of your values. This is how you inspect the structure of your types. Let us start with a simple
enumtype:
enum Result { Ok(i32), Err(String), } fn divide_in_two(n: i32) -> Result { if n % 2 == 0 { Result::Ok(n / 2) } else { Result::Err(format!("cannot divide {} into two equal parts", n)) } } fn main() { let n = 100; match divide_in_two(n) { Result::Ok(half) => println!("{n} divided in two is {half}"), Result::Err(msg) => println!("sorry, an error happened: {msg}"), } }
위의 match구문을 divide_in_two함수에서 반환되는 Result 값을 arm1으로 분해합니다.
- 첫번째 arm의
half는Okvariant에 바인딩된 값입니다.(n/2) - 두번째 amr의
msg는Errvariant에 바인딩 된 에러 메시지 입니다.
Here we have used the arms to destructure the
Resultvalue. In the first arm,halfis bound to the value inside theOkvariant. In the second arm,msgis bound to the error message.
역주 1: match의 패턴 중 하나입니다. (switch의 case에 해당)