use std::ops::Deref;
#[test]
fn structs() {
let mut player_health = Health(100);
let _enemy_health = Health::new(100);
player_health.lose_health(10);
player_health.print_health();
let _ice_cream = FavoriteFood::IceCream {
topping: "Nothing".to_owned(),
scoops: 1,
flavor: "Space Junkie".to_owned(),
};
}
struct Health(pub u32);
impl Health {
pub fn new(data: u32) -> Self {
Self(data)
}
pub fn lose_health(&mut self, amount: u32) {
self.0 -= amount;
}
pub fn print_health(&self) {
println!("health: {:?}", **self);
}
}
impl Deref for Health {
type Target = u32;
fn deref(&self) -> &Self::Target {
&self.0
}
}
#[allow(dead_code)]
enum FavoriteFood {
Hamburger,
HotDog,
IceCream {
topping: String,
scoops: u32,
flavor: String,
},
}