enum Color {
Red,
Green,
Blue,
}
fn main() {
let red: Color = Color::Red;
let green = Color::Green;
println!("red = {}", red); // display trait 가 없기 때문에 오류 뜸.
}
#[derive(Debug, PartialEq)] 추가해주면 프린트 잘됨. (PartialEq로 비교도 가능)
#[derive(Debug, PartialEq)]
enum Color {
Red,
Green,
Blue,
}
fn main() {
let red: Color = Color::Red;
let green = Color::Green;
println!("red = {:?}", red); // display trait 가 없기 때문에 오류 뜸.
println!("red == green => {}", red == green);
println!("red == red => {}", red == red);
}
[실행결과]
red = Red
red == green => false
red == red => true
Enum 안에 다양한 타입 담기
enum Message {
StartGame,
WinPoint {who: String},
ChangePlayerName(String),
}
fn main() {
let m1 = Message::StartGame;
let m2 = Message::WinPoint { who: String::from("홍길동"), };
let m3 = Message::ChangePlayerName(String::from("길동"));
}
let absent_number: Option<i32> = None;match 구문