Created
January 23, 2024 05:25
-
-
Save utilForever/a4e5228dc8df086e81054da1d4ca5e06 to your computer and use it in GitHub Desktop.
Exercise - Health Statistics
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// TODO: remove this when you're done with your implementation. | |
#![allow(unused_variables, dead_code)] | |
#![allow(dead_code)] | |
pub struct User { | |
name: String, | |
age: u32, | |
height: f32, | |
visit_count: usize, | |
last_blood_pressure: Option<(u32, u32)>, | |
} | |
pub struct Measurements { | |
height: f32, | |
blood_pressure: (u32, u32), | |
} | |
pub struct HealthReport<'a> { | |
patient_name: &'a str, | |
visit_count: u32, | |
height_change: f32, | |
blood_pressure_change: Option<(i32, i32)>, | |
} | |
impl User { | |
pub fn new(name: String, age: u32, height: f32) -> Self { | |
Self { | |
name, | |
age, | |
height, | |
visit_count: 0, | |
last_blood_pressure: None, | |
} | |
} | |
pub fn visit_doctor(&mut self, measurements: Measurements) -> HealthReport { | |
todo!("Update a user's statistics based on measurements from a visit to the doctor") | |
} | |
} | |
fn main() { | |
let bob = User::new(String::from("Bob"), 32, 155.2); | |
println!("I'm {} and my age is {}", bob.name, bob.age); | |
} | |
#[test] | |
fn test_visit() { | |
let mut bob = User::new(String::from("Bob"), 32, 155.2); | |
assert_eq!(bob.visit_count, 0); | |
let report = bob.visit_doctor(Measurements { | |
height: 156.1, | |
blood_pressure: (120, 80), | |
}); | |
assert_eq!(report.patient_name, "Bob"); | |
assert_eq!(report.visit_count, 1); | |
assert_eq!(report.blood_pressure_change, None); | |
let report = bob.visit_doctor(Measurements { | |
height: 156.1, | |
blood_pressure: (115, 76), | |
}); | |
assert_eq!(report.visit_count, 2); | |
assert_eq!(report.blood_pressure_change, Some((-5, -4))); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment