#[derive(Debug)]
pub enum IpAddress<'a> {
V4(u8, u8, u8, u8),
V6(&'a str),
}
#[allow(dead_code)]
impl<'a> IpAddress<'a> {
pub fn check_version(ip_address: Self) {
match ip_address {
Self::V4(first, second, third, fourth) => {
println!(
"Ip address is version 4: {}.{}.{}.{}",
first, second, third, fourth
);
}
Self::V6(address_v6) => {
println!("Ip address is version 6: {}", address_v6);
}
}
}
}
#[allow(dead_code)]
pub fn enum_display() {
let home_address = IpAddress::V4(100, 10, 10, 5);
let loop_back = IpAddress::V6("::01");
println!("home address: {:#?}", home_address);
println!("loop_back, {:#?}", loop_back);
}
#[allow(dead_code)]
pub fn pattern_matching() {
let home_address = IpAddress::V4(100, 10, 10, 5);
let loop_back = IpAddress::V6("::01");
IpAddress::check_version(home_address);
IpAddress::check_version(loop_back);
}