enum IpAddr {
V4(u8, u8, u8, u8),
V6(String),
}
enum Message {
Quit,
Move { x: i32, y: i32 },
Write(String),
ChangeColor(i32, i32, i32),
}
impl Message {
fn call(&self) {
// 메서드 본문이 여기 정의될 것입니다
}
}
// Option 열거형의 varient를 사용하기 위해 앞에 `Option::`을 사용하지 않아도 됩니다.
// 그냥 사용하면 됩니다.
enum Option<T> {
None,
Some(T),
}
let some_number = Some(5);
let some_char = Some('e');
let absent_number: Option<i32> = None;
Option 열거형 변수에 저장된 특정 자료형의 값은 동일한 자료형의 일반 변수와 다르게 취급됩니다. 따라서 아래 코드는 컴파일러에서 에러가 발생시킵니다.
let x: i8 = 5;
let y: Option<i8> = Some(5);
let sum = x + y; // Error 발생!!!
Option<T>
를 T
로 변환해야 합니다. 변환하는 방법은 여러가지가 있는데, 그 중 널리 쓰이는 두 가지 방법은 아래와 같습니다.// match 문을 이용
let sum = match y {
Some(value) => x + value,
None => x, // y가 None일 경우 x만 반환
// map_or 메소드 이용
let sum = y.map_or(x, |value| x + value);
};