enum IpAddr {
V4(u8, u8, u8, u8),
V6(String),
}
impl IpAddr {
fn to_string(&self) -> String {
match self {
IpAddr::V4(a, b, c, d) => format!("{}.{}.{}.{}", a, b, c, d),
IpAddr::V6(s) => s.clone(),
}
}
}
enum User<T> {
Some(T),
None,
}
enum Grade {
A,
B,
C,
D,
F,
}
fn grade_to_val(grade: Grade) -> u8 {
match grade {
Grade::A => 4,
Grade::B => 3,
Grade::C => 2,
Grade::D => 1,
Grade::F => 0,
}
}
fn plus_one(x: Option<i32>) -> Option<i32> {
match x {
None => None,
Some(i) => Some(i + 1),
}
}
fn main() {
let four = IpAddr::V4(127, 0, 0, 1);
let six = IpAddr::V6(String::from("::1"));
println!("{:?}", four.to_string());
println!("{:?}", six.to_string());
let five = Some(5);
let six = plus_one(five);
let none = plus_one(None);
println!("{:?}", six);
println!("{:?}", none);
let x = 2u8;
match x {
1 => println!("one"),
2 => println!("two"),
3 => println!("three"),
_ => println!("anything"),
}
let y = Some(4u8);
if let Some(3) = y {
println!("three");
}
}