Here's is the code with a bunch of Error
use std::io;
struct Person {
name: String,
age: u32,
hobby: String,
}
impl Person {
fn new(name: &str, age: u32, hobby: &str) -> Self {
Self {
name: name.to_string(),
age,
hobby: hobby.to_string(),
}
}
}
fn main() {
let mut people = vec![
Person::new("John", 26, "Music"),
Person::new("Kyle", 22, "Coding"),
Person::new("Tommy", 17, "-"),
];
add_person(&mut people);
println!("The people list:");
for (i, person) in &people.iter().enumerate() {
println!("index: {}, name: {}, age: {}, hobby: {}", i, person.name, person.age, person.hobby);
}
}
fn add_person(people: &mut vec!) {
println!("Add a new person in people list");
// person name
println!("Person name >>");
let mut person_name: String = String::new();
io::stdin()
.read_line(&mut person_name)
.expect("Something went wrong");
let name: &str = person_name.trim();
// person age
let mut age: u32 = 0;
loop {
println!("Person age >>")
let mut person_age: String = String::new();
io::stdin()
.read_line(&mut person_age)
.expect("Something went wrong");
let person_age: u32 = match person_age.trim().parse() {
Ok(num) => num,
Err(_) => {
continue println!("It's not valid age!");
},
};
break age = person_age;
};
// person hobby
println!("Person hobby >>")
let mut person_hobby: String = String::new();
io::stdin()
.read_line(&mut person_hobby)
.expect("Something went wrong");
let hobby: &str = person_hobby.trim();
people.push(Person::new(name, age, hobby))
}