From e029856b4b9be91bfa31c1a59176526e8bd823c8 Mon Sep 17 00:00:00 2001 From: Daniel Tomlinson Date: Sun, 15 Nov 2020 16:45:33 +0000 Subject: [PATCH] Adding latest --- src/stats.rs | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/stats.rs b/src/stats.rs index edb474e..d4b3fa2 100644 --- a/src/stats.rs +++ b/src/stats.rs @@ -2,16 +2,22 @@ use std::convert::TryFrom; #[derive(Debug)] pub struct StatsCalculator { - data: Vec, + data: &Vec, + length: i32, + total: i32, } -impl StatsCalculator { +impl StatsCalculator{ pub fn default_data() -> Self { - Self::from_vec(vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) + Self::from_vec(&vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) } - pub fn from_vec(initial_data: Vec) -> Self { - return StatsCalculator { data: initial_data }; + pub fn from_vec(&initial_data: &Vec) -> Self { + return StatsCalculator { + data: &initial_data, + length: Self::get_length(&initial_data), + total: Self::get_total(&initial_data), + }; } // pub fn initialise(&mut self) -> () { @@ -28,8 +34,8 @@ impl StatsCalculator { // } // } - fn get_length(&self) -> i32 { - let length = i32::try_from(self.data.len()); + fn get_length(&initial_data: &Vec) -> i32 { + let length = i32::try_from(initial_data.len()); if let Ok(i) = length { return i; @@ -38,23 +44,20 @@ impl StatsCalculator { } } - fn get_total(&self) -> i32 { - return self.data.iter().sum(); + fn get_total(&initial_data: &Vec) -> i32 { + return initial_data.iter().sum(); } pub fn get_mean(&self) -> f32 { - let total = self.get_total(); - let length = self.get_length(); - return total as f32 / length as f32; + return self.total as f32 / self.length as f32; } pub fn get_median(&mut self) -> f32 { - let length = self.get_length(); - let mid = length as usize / 2; + let mid = self.length as usize / 2; self.data.sort(); - if length % 2 != 0 { + if self.length % 2 != 0 { return self.data[mid] as f32; } else { return (self.data[mid - 1] as f32 + self.data[mid] as f32) / 2.0;