Commit graph

5 commits

Author SHA1 Message Date
1d98eee6de perf(widget): avoid VecDeque clone in segmented_button/table Model::clear
Model::clear() cloned the entire order VecDeque to iterate while
remove() mutated it, producing an O(n) allocation proportional to the
number of items — needless on a clear() which is going to drop all of
them anyway.

Replace the clone with std::mem::take(&mut self.order): we iterate the
taken VecDeque (transferring ownership), and the inner self.order.remove(index)
in each remove() call now finds position()==None and no-ops, since
self.order has been swapped with an empty default.

Same semantics, zero allocation. Noticeable on large nav/table models
(>100 items) and on apps that reset state frequently (settings pages,
file lists, context menus).
2026-04-19 16:29:02 +02:00
Cheong Lau
a27bb5e05d chore: apply clippy suggestions 2025-10-05 04:40:51 +02:00
Johann Tuffe
67df54f383
perf(table): sort optimizations 2025-04-11 18:19:43 +02:00
Michael Aaron Murphy
8bce57ed83 chore(table): format code 2025-03-26 16:42:50 +01:00
Adam Cosner
2753941aad
feat(widget): add table widget 2025-03-24 17:48:20 +01:00