If you’ve completed the first part of the Student Grades Tracker challenge, congratulations! Now it’s time to enhance the functionality by adding methods directly to the Student struct.
This will help you practice designing methods for individual struct instances while integrating them into a larger system.
For this challenge, we’ll build upon the StudentGrades system. In addition to the methods you’ve already implemented, you’ll now focus on adding two new methods to the Student struct itself.
You need to extend the Student struct by implementing two methods:
add_grade: Add a grade to the student’s grades vector.average_grade(&self) -> f64: Calculate and return the average grade of the student. Return 0.0 if the student has no grades.The StudentGrades struct remains the same as in the previous challenge. You’ll modify its existing methods to use the newly added methods of the Student struct.
use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        // Implement here        if self.grades.len() > 0 {            let sum = self.grades.iter().map(|x| *x as f64).sum::<f64>();            sum / (self.grades.len() as f64)        } else {            0.0        }    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        // Implement here        if self.grades.len() > 0 {            let sum = self.grades.iter().map(|x| *x as f64).sum::<f64>();            sum / (self.grades.len() as f64)        } else {            0.0        }    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        // Implement here        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        if self.grades.is_empty() {            return 0.0;        }        let sum: f64 = self.grades.iter().map(|x| *x as f64).sum();        sum / self.grades.len() as f64    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;type StudentInfo = HashMap<String, Student>;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        if self.grades.is_empty() {            return 0.0        }        let sum: f64 = self.grades.iter().map(|&g| g as u32).sum::<u32>() as f64;        let count: f64 = self.grades.len() as f64;        return sum / count    }}pub struct StudentGrades {    pub students: StudentInfo,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: StudentInfo::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();return     alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        // Implement here        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        // Implement here        match self.grades.len() {            0 => 0.0,            v => self.grades.iter().map(|&v| v as f64).sum::<f64>() / v as f64        }    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        // Implement here        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        // Implement here        match self.grades.len() {            0 => 0.0,            v => self.grades.iter().map(|&v| v as f64).sum::<f64>() / v as f64        }    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        if self.grades.is_empty() {            0.0        } else {            let mut sum: f64 = 0.0;            for i in self.grades.iter() {                sum += *i as f64;            }            sum / self.grades.len() as f64        }    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        // Implement here        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        // Implement here        let sum = self.grades.iter().sum::<u8>() as f64;        let count = self.grades.len() as f64;        if self.grades.is_empty() {            0f64        } else {            sum/count        }        //let sum: u32 = self.grades.iter().map(|&g| g as u32).sum();        //let count = self.grades.len() as f64;        //sum as f64/count     }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        // Implement here        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        // Implement here        if self.grades.is_empty() {            return 0.0;        }        let sum: u32 = self.grades.iter().map(|&g| g as u32).sum();        let count = self.grades.len() as f64;        sum as f64/count     }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        if self.grades.is_empty() {            0f64        } else {            (self                .grades                .iter()                .fold(0u32, |acc, grade| acc + *grade as u32) as f64)                / self.grades.len() as f64        }    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        // Implement here        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        // Implement here        if self.grades.is_empty() {            0f64        } else {            self.grades.iter().sum::<u8>() as f64 / self.grades.len() as f64        }    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        if self.grades.is_empty() {            0f64        } else {            self.grades.iter().            fold(0f64, |acc, x| acc + *x as f64) / self.grades.len() as f64        }    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        // Implement here        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        // Implement here        if self.grades.len() == 0 {            return 0.0        }        (self.grades.iter().sum::<u8>() as f64) / self.grades.len() as f64    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        // Implement here        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        // Implement here        if self.grades.len() == 0 {            return 0.0        }        (self.grades.iter().sum::<u8>() as f64) / self.grades.len() as f64    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        // Implement here        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        // Implement here        let len = self.grades.len();        if len == 0 {            return 0.0;        }        self.grades.iter().sum::<u8>() as f64 / len as f64    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        if self.grades.len() == 0 {            return 0.0;        }        self.grades.iter().sum::<u8>() as f64 / self.grades.len() as f64    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        self.grades.push(grade)    }    pub fn average_grade(&self) -> f64 {        if self.grades.is_empty() {            return 0.0;        }        let sum: u32 = self.grades.iter().map(|&g| g as u32).sum();        let count = self.grades.len() as f64;        (sum as f64) / count    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        // Implement here        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        // Implement here        if self.grades.is_empty() {            0 as f64        }else{            self.grades.iter().fold(0, |acc, &el| acc + el) as f64 / self.grades.len() as f64        }    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        if self.grades.is_empty() {            return 0 as f64;        } else {            self.grades.iter().fold(0, |acc, &el| acc + el) as f64 / self.grades.len() as f64        }    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        // Implement here        self.grades.push(grade)    }    pub fn average_grade(&self) -> f64 {        // Implement here        if self.grades.len() == 0 {            return 0.0        }        let mut a: f64 = 0.0;        for i in self.grades.iter() {            a = a + *i as f64        };        a / self.grades.len() as f64    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        // Implement here        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        // Implement here        if !self.grades.is_empty(){            let length = self.grades.len() as f64;            let mut sum :f64 = 0.0;            for sgrade in self.grades.clone().into_iter(){                sum += sgrade as f64;            }            sum/= length;            return sum;        }        else{            0.0        }    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        if self.grades.len() == 0 {            return 0f64;        }                self.grades.iter().map(|&g| g as f64).sum::<f64>() / self.grades.len() as f64    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        if self.grades.is_empty() {            0.0        } else {            let sum: u32 = self.grades.iter().map(|&g| g as u32).sum();            sum as f64 / self.grades.len() as f64        }    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("Alice's grades: {:?}", alice.grades);    println!("Alice's average: {:?}", alice.average_grade());    println!("Bob's grades: {:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        // Implement here       self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        // Implement here        let total: u32 = self.grades.iter().map(|&g| g as u32).sum();        if total != 0 {            return total as f64 / self.grades.len() as f64 ;        }        return 0.0 as f64;    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        if self.grades.is_empty() {            return 0f64;        }        self.grades.iter().sum::<u8>() as f64 / self.grades.iter().count() as f64    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        let num_grades: usize = self.grades.len();        if num_grades == 0 {            return 0.0        }        let total_grades: u8 = self.grades.iter().sum();        total_grades as f64 / num_grades as f64    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        let total: u32 = self.grades.iter().map(|&g| g as u32).sum();        if total == 0{            return 0.0 as f64;        }        total as f64 / self.grades.len() as f64    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        // Implement here        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        // Implement here        let sum: u32 = self.grades.iter().map(|&g| g as u32).sum();        let count = self.grades.len() as f64;        if count == 0.0 {            0.0        } else {            sum as f64 / count        }    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        // Implement here        self.grades.push(grade)    }    pub fn average_grade(&self) -> f64 {        // Implement here        if self.grades.len() == 0 {            return 0.0        }        self.grades.iter().map(|&x| x as f64).sum::<f64>()/self.grades.len() as f64        }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        if self.grades.is_empty() {           0.0        } else {            self.grades.iter().sum::<u8>() as f64 / self.grades.len() as f64        }    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        self.grades.push(grade)    }    pub fn average_grade(&self) -> f64 {        if self.grades.is_empty() {            0.0        } else {            self.grades.iter().sum::<u8>() as f64 / self.grades.len() as f64        }    }}#[derive(Default)]pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        // Implement here        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        // Implement here        let n = self.grades.len();        if n == 0 {            return 0.0;        }        let mut sum : f64 = self.grades.iter().map(|&x| x as f64).sum::<f64>();        sum/n as f64    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        // Implement here        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        // Implement here        let mut sum : f64 = 0.0;        if self.grades.len() == 0 {            return sum;        }        for i in self.grades.iter() {            sum += (*i) as f64;        }        sum/self.grades.len() as f64    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        // Implement here        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        // Implement here        let mut agerage_grade = 0.0;        let sum_of_grades: u8 = self.grades.iter().sum();        if (self.grades.len()>0){           agerage_grade = (sum_of_grades as f64 / (self.grades.len()) as f64);             }            agerage_grade    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        // Implement here        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        // Implement here        if self.grades.len() == 0{            return 0.0;        }        let avg = self.grades.iter().map(|&grade| grade as f64).sum::<f64>() / self.grades.len() as f64;        avg    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        // Implement here        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        // Implement here        let sum: f64 = self.grades.iter().map(|&x| x as f64).sum();        let count: f64 = self.grades.len() as f64;        //let average: f64 =  as f64 / self.grades.len() as f64;        if count > 0.0 {            return sum / count;        }else{            return 0 as f64;        }    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        if self.grades.is_empty() {            return 0.0        }        let grade_count = self.grades.len() as f64;        let total_grade = self.grades.iter().fold( 0.0, |acc, curr| acc + *curr as f64);        total_grade / grade_count    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        if self.grades.is_empty() {            return 0.0;        }        let grades_list_count = self.grades.len() as f64;        let total_grades = self.grades.iter().fold( 0.0, |acc, curr| acc + *curr as f64);        total_grades / grades_list_count    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        if self.grades.len() == 0 {            return 0.0;        }        let sum: u8 = self.grades.iter().sum();        f64::from(sum) / (self.grades.len() as f64)    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        if self.grades.is_empty() {            return 0.0;        }        let sum: u32 = self.grades.iter().map(|&g| g as u32).sum();        sum as f64 / self.grades.len() as f64    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        if self.grades.is_empty() {            return 0.0;        }        let sum: u32 = self.grades.iter().map(|&g| g as u32).sum();        sum as f64 / self.grades.len() as f64    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        // Implement here        self.grades.push(grade)    }    pub fn average_grade(&self) -> f64 {       if self.grades.len() == 0 {        0.0       } else {        self.grades.iter().sum::<u8>() as f64 / self.grades.len() as f64       } // Implement here    }} pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        // Implement here        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        // Implement here        if self.grades.len() == 0 {            0.0        } else {            self.grades.iter().sum::<u8>() as f64 / self.grades.len() as f64        }    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        // Implement here        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        // Implement here        if self.grades.is_empty() {            return 0.0;        }                self.grades.iter().sum::<u8>() as f64 / self.grades.len() as f64    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        if self.grades.is_empty() {            0.0        } else {            self.grades.iter().sum::<u8>() as f64 / self.grades.len() as f64        }    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        // Implement here        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        // Implement here        if self.grades.is_empty() {            return 0.0        }        self.grades.iter().map(|&i| i as f64).sum::<f64>() / self.grades.len() as f64    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        // Implement here        self.grades.push(grade);     }    pub fn average_grade(&self) -> f64 {        // Implement here        if self.grades.is_empty() {            return 0.0;         }        else {            return (self.grades.iter()            .map(|&grade| grade as u64)            .sum::<u64>() as f64) / (self.grades.len() as f64) ;             // no overflow?? no static reference mutation?        }    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        let mut sum = 0;        let mut count = 0;        for grade in &self.grades {            sum += grade;            count += 1;        }        if count != 0 {            sum as f64 / count as f64        } else {             0.0        }    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        // Implement here        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        // Implement here        if self.grades.is_empty() { 0.0 }        else {            let sum: f64 = self.grades.iter().map(|&g| g as f64).sum();              sum / self.grades.len() as f64        }    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}use std::collections::HashMap;pub struct Student {    pub name: String,    pub grades: Vec<u8>,}impl Student {    pub fn add_grade(&mut self, grade: u8) {        self.grades.push(grade);    }    pub fn average_grade(&self) -> f64 {        if self.grades.is_empty() {            0.0        }        else {            let sum: f64 = self.grades.iter().map(|&x| x as f64).sum();            sum / self.grades.len() as f64        }    }}pub struct StudentGrades {    pub students: HashMap<String, Student>,}impl StudentGrades {    pub fn new() -> Self {        Self {            students: HashMap::new(),        }    }    pub fn add_student(&mut self, name: &str) {        self.students.entry(name.to_string()).or_insert(Student {            name: name.to_string(),            grades: vec![],        });    }    pub fn add_grade(&mut self, name: &str, grade: u8) {        if let Some(student) = self.students.get_mut(name) {            student.add_grade(grade);        }    }    pub fn get_grades(&self, name: &str) -> &[u8] {        &self.students.get(name).unwrap().grades    }}pub fn main() {    let mut tracker = StudentGrades::new();    tracker.add_student("Alice");    tracker.add_student("Bob");    tracker.add_grade("Alice", 85);    tracker.add_grade("Alice", 90);    tracker.add_grade("Bob", 78);    let alice = tracker.students.get_mut("Alice").unwrap();    alice.add_grade(95);    println!("{:?}", alice.grades);    println!("{:?}", alice.average_grade());    println!("{:?}", tracker.get_grades("Bob"));}