fn get_aerith() -> PlayerCharacter {
return PlayerCharacter::new(
"Aerith",
"Gainsborough",
"Great Gospel",
"Princess Guard",
EyeColor::Green,
163,
);
}
fn get_tifa() -> PlayerCharacter {
return PlayerCharacter::new(
"Tifa",
"Lockheart",
"Final Heaven",
"Premium Heart",
EyeColor::Red,
167,
);
}
fn get_cloud() -> PlayerCharacter {
return PlayerCharacter::new(
"Cloud",
"Strife",
"Omnislash",
"Ultima Weapon",
EyeColor::Blue,
173,
);
}
pub fn about_aerith() {
let char_aerith = get_aerith();
println!(" First Name: {}
Last Name: {}
Ultimate Limit Break: {}
Ultimate Weapon: {}
Eye Color: {:?}
Height: {}cm
",
char_aerith.first_name,
char_aerith.last_name,
char_aerith.ultimate_limit_break,
char_aerith.ultimate_weapon,
char_aerith.eye_color.unwrap().as_str(),
char_aerith.height,
);
}
impl EyeColor {
fn as_str(&self) -> &str {
match self {
EyeColor::Green => "Green",
EyeColor::Blue => "Blue",
EyeColor::Brown => "Brown",
EyeColor::Red => "Red",
_ => "Unknown"
}
}
}
enum EyeColor {
Green,
Blue,
Brown,
Red,
}
struct PlayerCharacter {
first_name: String,
last_name: String,
ultimate_limit_break: String,
ultimate_weapon: String,
eye_color: Option<EyeColor>,
height: u16, }
impl PlayerCharacter {
fn new(
first_name: &str,
last_name: &str,
ultimate_limit_break: &str,
ultimate_weapon: &str,
eye_color: EyeColor,
height: u16,
) -> PlayerCharacter {
return PlayerCharacter{
first_name: first_name.to_string(),
last_name: last_name.to_string(),
ultimate_limit_break: ultimate_limit_break.to_string(),
ultimate_weapon: ultimate_weapon.to_string(),
eye_color: Some(eye_color),
height: height,
}
}
}