From 21584f4edf8661e046591f4fc5b916b33484e55c Mon Sep 17 00:00:00 2001 From: Marco De Araujo Date: Fri, 26 Dec 2025 09:33:51 -0400 Subject: [PATCH] Allocating with capacity --- src/core/data.rs | 4 ++-- src/ui/components/monitor_list.rs | 5 +++-- src/ui/dashboard/model.rs | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/core/data.rs b/src/core/data.rs index 941b904..6f2a742 100644 --- a/src/core/data.rs +++ b/src/core/data.rs @@ -7,7 +7,7 @@ use crate::data::{ }; pub fn unify_data(status_page: &StatusPageResponse, heartbeat: &HeartbeatResponse) -> UnifiedData { - let mut groups = Vec::new(); + let mut groups = Vec::with_capacity(status_page.public_group_list.len()); let heartbeat_map: HashMap> = heartbeat .monitors .iter() @@ -21,7 +21,7 @@ pub fn unify_data(status_page: &StatusPageResponse, heartbeat: &HeartbeatRespons .collect(); for group in &status_page.public_group_list { - let mut monitors = Vec::new(); + let mut monitors = Vec::with_capacity(group.monitor_list.len()); for monitor_info in &group.monitor_list { let uptime_data = uptime_map.get(&(monitor_info.id, 24)).cloned(); let heartbeats = heartbeat_map diff --git a/src/ui/components/monitor_list.rs b/src/ui/components/monitor_list.rs index 746b657..e0b1c91 100644 --- a/src/ui/components/monitor_list.rs +++ b/src/ui/components/monitor_list.rs @@ -35,7 +35,7 @@ fn layout_groups(area: Rect, groups: &[GroupViewState]) -> Vec { let line_height = content_height as usize / total_lines; let mut current_y = area.y + 1; - let mut areas = Vec::new(); + let mut areas = Vec::with_capacity(groups.len()); for group in groups { let group_lines = group.monitors.len() + 2; @@ -185,13 +185,14 @@ fn get_formated_line(text: String, color: Color, modifier: Modifier) -> Line<'st } fn create_status_line_spans(status_history: &[MonitorStatus]) -> Line<'_> { - let mut spans = Vec::new(); let recent_status: Vec<_> = status_history .iter() .rev() .take(STATUS_LINE_LENGTH) .collect(); + let mut spans = Vec::with_capacity(recent_status.len()); + for status in recent_status.iter().rev() { let c = get_status_char(status); let color = get_status_color(status); diff --git a/src/ui/dashboard/model.rs b/src/ui/dashboard/model.rs index d6af219..f48eb3d 100644 --- a/src/ui/dashboard/model.rs +++ b/src/ui/dashboard/model.rs @@ -47,7 +47,7 @@ impl DashboardViewState { } pub fn from_unified_data(data: UnifiedData) -> Self { - let mut groups = Vec::new(); + let mut groups = Vec::with_capacity(data.groups.len()); for group in data.groups { groups.push(GroupViewState { @@ -92,7 +92,7 @@ fn get_status_history(heartbeats: &[HeartbeatEntry]) -> Vec { } fn add_monitor_view_state(group: UnifiedGroupData) -> Vec { - let mut monitors = Vec::new(); + let mut monitors = Vec::with_capacity(group.monitors.len()); for monitor in group.monitors { let status_history = get_status_history(&monitor.heartbeats);