#[derive(Debug)]
enum Test1 {
A,
B,
}
#[derive(Debug)]
enum Test2 {
A(i32),
B(String),
C(i32, String),
}
#[derive(Debug)]
struct Struct {}
#[derive(Debug)]
enum Test3 {
A(Struct),
}
impl Test3 {
fn print(&self) {
println!("call print");
}
}
fn main() {
println!("1 : {:?}", Test1::A);
println!("2 : {:?}", Test1::B);
println!("3 : {:?}", Test2::A(1));
println!("4 : {:?}", Test2::B(String::from("a")));
println!("5 : {:?}", Test2::C(1, String::from("a")));
match Test2::A(1) {
Test2::A(i) => println!("6 : {}", i),
Test2::B(s) => println!("6 : {}", s),
_ => println!("6 : other"),
}
match Test2::C(1, String::from("a")) {
Test2::A(i) => println!("7 : {}", i),
Test2::B(s) => println!("7 : {}", s),
_ => println!("7 : other"),
}
println!("8 : {:?}", Test3::A(Struct {}));
Test3::A(Struct {}).print();
let o: Option<i32> = None;
println!("9 : {}", o.is_some());
println!("10 : {}", o.is_none());
match o {
Some(t) => println!("11 : Some - {}", t),
None => println!("11 : None"),
}
let o: Option<i32> = Some(1);
println!("12 : {}", o.is_some());
println!("13 : {}", o.is_none());
match o {
Some(t) => println!("14 : Some - {}", t),
None => println!("14 : None"),
}
match Some(1) {
Some(1) => println!("15 : Some(1)"),
Some(t) => println!("15 : Some - {}", t),
_ => println!("15 : other"),
}
match Some(3) {
Some(1) => println!("15 : Some(1)"),
Some(t) => println!("15 : Some - {}", t),
_ => println!("15 : other"),
}
let o: Option<i32> = Some(1);
if let Some(1) = o {
println!("16 : Some(1)");
}
}