Problem
Two allocation patterns in src/ui/tabs/overview.rs:
1. connections_title — two allocations per frame for static content
let mut base = if ui_state.show_historic {
"Active + Historic Connections".to_string() // alloc
} else {
"Active Connections".to_string() // alloc
};
if grouped {
base.push_str(" · Grouped by Process"); // possible realloc
}
// …then:
Span::styled(format!(" {base}"), …) // alloc
The four possible combinations of (show_historic, grouped) each produce a distinct static string. A single match covers all four without allocating:
let base: &'static str = match (ui_state.show_historic, grouped) {
(false, false) => " Active Connections",
(false, true) => " Active Connections · Grouped by Process",
(true, false) => " Active + Historic Connections",
(true, true) => " Active + Historic Connections · Grouped by Process",
};
Span::styled(base, …) // zero alloc: &'static str → Cow::Borrowed
The leading space is embedded in each static string, so the format!(" {base}") call is also eliminated. Saves 2+ heap allocations per frame.
2. Per-row connector — connector.to_string() in the expanded-group render loop
let connector: &'static str = if is_last { " └─ " } else { " ├─ " };
// …
Span::styled(connector.to_string(), theme::fg(theme::muted())) // alloc per row
connector is already &'static str. Span::styled accepts T: Into<Cow<'static, str>>, which &'static str satisfies directly — to_string() is unnecessary.
Span::styled(connector, theme::fg(theme::muted())) // zero alloc
Saves 1 heap allocation per expanded connection per frame.
Impact
connections_title: −2 to −3 allocations every frame regardless of what is visible.
- Connector: −1 allocation per visible expanded-group connection per frame.
Problem
Two allocation patterns in
src/ui/tabs/overview.rs:1.
connections_title— two allocations per frame for static contentThe four possible combinations of
(show_historic, grouped)each produce a distinct static string. A singlematchcovers all four without allocating:The leading space is embedded in each static string, so the
format!(" {base}")call is also eliminated. Saves 2+ heap allocations per frame.2. Per-row connector —
connector.to_string()in the expanded-group render loopconnectoris already&'static str.Span::styledacceptsT: Into<Cow<'static, str>>, which&'static strsatisfies directly —to_string()is unnecessary.Saves 1 heap allocation per expanded connection per frame.
Impact
connections_title: −2 to −3 allocations every frame regardless of what is visible.