hs-rust-learn 0.1.0

hs's rust test learn
Documentation
// #[derive(Debug)]
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");
    }

}