From 61db81ecfe5684ddb8a360715f43357a042162c0 Mon Sep 17 00:00:00 2001 From: Jack Wills <32690432+mrjackwills@users.noreply.github.com> Date: Mon, 30 May 2022 14:13:24 +0000 Subject: [PATCH] fix(docker_data): remove unwrap() use if let (Some(x), Some(y)) instead of x.is_some && y.is_some() --- src/docker_data/mod.rs | 45 +++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/src/docker_data/mod.rs b/src/docker_data/mod.rs index 0074d1e..0776794 100644 --- a/src/docker_data/mod.rs +++ b/src/docker_data/mod.rs @@ -31,12 +31,12 @@ impl DockerData { let mut cpu_percentage = 0.0; let previous_cpu = stats.precpu_stats.cpu_usage.total_usage; let cpu_delta = stats.cpu_stats.cpu_usage.total_usage as f64 - previous_cpu as f64; - if stats.cpu_stats.system_cpu_usage.is_some() - && stats.precpu_stats.system_cpu_usage.is_some() - { - let system_delta = (stats.cpu_stats.system_cpu_usage.unwrap_or(0) - - stats.precpu_stats.system_cpu_usage.unwrap_or(0)) - as f64; + + if let (Some(cpu_stats_usage), Some(precpu_stats_usage)) = ( + stats.cpu_stats.system_cpu_usage, + stats.precpu_stats.system_cpu_usage, + ) { + let system_delta = (cpu_stats_usage - precpu_stats_usage) as f64; let online_cpus = stats.cpu_stats.online_cpus.unwrap_or_else(|| { stats .cpu_stats @@ -54,7 +54,7 @@ impl DockerData { } /// Get a single docker stat in order to update mem and cpu usage - /// don't take &self, so that can tokio::spawn into it's on thread + /// don't take &self, so that can tokio::spawn into it's own thread async fn update_container_stat( docker: Arc, id: String, @@ -117,14 +117,15 @@ impl DockerData { let app_data = Arc::clone(&self.app_data); let is_running = *is_running; let id = id.to_owned(); - tokio::spawn(async move { - Self::update_container_stat(docker, id, app_data, is_running).await - }); + tokio::spawn(Self::update_container_stat( + docker, id, app_data, is_running, + )); } } /// Get all current containers, handle into ContainerItem in the app_data struct rather than here /// Just make sure that items sent are guaranteed to have an id + /// return Vec<(is_running, id)> pub async fn update_all_containers(&mut self) -> Vec<(bool, String)> { let containers = self .docker @@ -136,11 +137,11 @@ impl DockerData { .unwrap_or_default(); let mut output = vec![]; - // iter over containers, to only send ones which have an id, as use ID for extensivley! - // alternative is to create my own container struct, and will out with details - containers.iter().filter(|i| i.id.is_some()).for_each(|c| { - output.push(c.to_owned()); - }); + // iter over containers, to only send ones which have an id, as use id for identification throughout! + containers + .iter() + .filter(|i| i.id.is_some()) + .for_each(|c| output.push(c.to_owned())); self.app_data.lock().update_containers(&output); output @@ -157,7 +158,7 @@ impl DockerData { } /// Update single container logs - /// don't take &self, so that can tokio::spawn into it's on thread + /// don't take &self, so that can tokio::spawn into it's own thread async fn update_log( docker: Arc, id: String, @@ -202,12 +203,12 @@ impl DockerData { async fn update_everything(&mut self) { let all_ids = self.update_all_containers().await; - let op_index = self.app_data.lock().get_selected_log_index(); - if let Some(index) = op_index { - let docker = Arc::clone(&self.docker); - let since = self.app_data.lock().containers.items[index].last_updated as i64; - let timestamps = self.timestamps; + let optional_index = self.app_data.lock().get_selected_log_index(); + if let Some(index) = optional_index { let id = self.app_data.lock().containers.items[index].id.to_owned(); + let since = self.app_data.lock().containers.items[index].last_updated as i64; + let docker = Arc::clone(&self.docker); + let timestamps = self.timestamps; let logs = Self::update_log(docker, id, timestamps, since).await; self.app_data.lock().update_log_by_index(logs, index); }; @@ -226,7 +227,7 @@ impl DockerData { }) } - /// Stop the loading_spin fn, and reset gui loading status + /// Stop the loading_spin function, and reset gui loading status fn stop_loading_spin(&mut self, handle: JoinHandle<()>) { handle.abort(); self.gui_state.lock().reset_loading();