From 632a95f8535a731244aaee1bc8155c1e9c027d8b Mon Sep 17 00:00:00 2001 From: EdJoPaTo Date: Fri, 26 Jan 2024 05:22:20 +0100 Subject: [PATCH] perf(key_left): remove clones Selection access is mutable already. Operate on it directly. --- src/lib.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 37fbab4..4f48fc5 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -216,10 +216,11 @@ where /// Handles the left arrow key. /// Closes the currently selected or moves to its parent. pub fn key_left(&mut self) { - let selected = self.selected(); - if !self.close(&selected) { - let (head, _) = get_identifier_without_leaf(&selected); - self.select(head.to_vec()); + // Reimplement self.close because of multiple different borrows + let changed = self.opened.remove(&self.selected); + if !changed { + // Select the parent by removing the leaf from selection + self.selected.pop(); } }