From 1b4c3f353103ca3382ad4020c382fdf23b12704f Mon Sep 17 00:00:00 2001 From: Michel de Graaf Date: Thu, 10 Sep 2026 09:55:04 +0200 Subject: [PATCH] refactor: trim the folder mark's allocations and indirection The unmarked-folder span and size string allocated per row per frame for nothing, and a filter/map_or_else chain built a string that only one state ever fills. A matches! fills it directly. --- soulseek-rs/src/ui/panes/browse_pane.rs | 26 ++++++++++--------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/soulseek-rs/src/ui/panes/browse_pane.rs b/soulseek-rs/src/ui/panes/browse_pane.rs index 0fb3d0a..692f952 100644 --- a/soulseek-rs/src/ui/panes/browse_pane.rs +++ b/soulseek-rs/src/ui/panes/browse_pane.rs @@ -174,7 +174,7 @@ fn render_browse_one( .collect(); let transfer = folder_status(&below); let marker = transfer.map_or_else( - || Span::raw(String::new()), + || Span::raw(""), |status| { let (glyph, style) = download_status_glyph(status); @@ -182,16 +182,14 @@ fn render_browse_one( }, ); let open = if row.expanded { "▾" } else { "▸" }; - let size = transfer - .filter(|status| { - matches!( - status, - DownloadStatus::InProgress { .. } - ) - }) - .map_or_else(String::new, |_| { - format!("{}%", folder_percent(&below)) - }); + let size = if matches!( + transfer, + Some(DownloadStatus::InProgress { .. }) + ) { + format!("{}%", folder_percent(&below)) + } else { + String::new() + }; ( Cell::from(Line::from(vec![ Span::raw(indent), @@ -289,11 +287,7 @@ fn folder_status<'a>(files: &[&'a Download]) -> Option<&'a DownloadStatus> { fn folder_percent(files: &[&Download]) -> u8 { let bytes: u64 = files.iter().map(|d| d.bytes_downloaded()).sum(); let total: u64 = files.iter().map(|d| d.size).sum(); - if total == 0 { - 0 - } else { - (bytes * 100 / total) as u8 - } + bytes.saturating_mul(100).checked_div(total).unwrap_or(0) as u8 } #[cfg(test)]