struct Student {
name: String,
grade: Option<u32>,
}
fn get_grade(
student_name: &String,
student_db: &Vec<Student>,
) -> Option<u32> {
for stu in student_db {
if stu.name == *student_name {
return stu.grade;
}
}
Option::None
}
fn main() {
let student_db = vec![
Student {
name: String::from("Alice"),
grade: Some(98),
},
Student {
name: "Bob".to_string(),
grade: Some(91),
},
Student {
name: "Mae".to_string(),
grade: Option::None,
},
];
let student_name = String::from("Bob");
let student_grade = get_grade(&student_name, &student_db);
match student_grade {
Some(u32) => {
println!(
"matching stu name {} with grade {}",
student_name,
student_grade.unwrap()
);
}
None => {
println!("no matching student name {}", student_name);
}
}
if let Some(grade_value) = student_grade {
println!("Grade is {grade_value}");
}
}