From 86458ffc398f5f04d9069ee3c3c583c2091e3f54 Mon Sep 17 00:00:00 2001 From: EdJoPaTo Date: Sat, 24 Feb 2024 01:03:04 +0100 Subject: [PATCH] perf: prefer into_iter() over clone() --- src/flatten.rs | 8 ++++---- src/state.rs | 19 +++++++++---------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/flatten.rs b/src/flatten.rs index 1ddff63..37e861e 100644 --- a/src/flatten.rs +++ b/src/flatten.rs @@ -85,7 +85,7 @@ fn get_opened_nothing_opened_is_top_level() { let opened = HashSet::new(); let result = flatten(&opened, &items); let result_text = result - .iter() + .into_iter() .map(|flattened| flattened.item.identifier) .collect::>(); assert_eq!(result_text, ["a", "b", "h"]); @@ -99,7 +99,7 @@ fn get_opened_wrong_opened_is_only_top_level() { opened.insert(vec!["b", "d"]); let result = flatten(&opened, &items); let result_text = result - .iter() + .into_iter() .map(|flattened| flattened.item.identifier) .collect::>(); assert_eq!(result_text, ["a", "b", "h"]); @@ -112,7 +112,7 @@ fn get_opened_one_is_opened() { opened.insert(vec!["b"]); let result = flatten(&opened, &items); let result_text = result - .iter() + .into_iter() .map(|flattened| flattened.item.identifier) .collect::>(); assert_eq!(result_text, ["a", "b", "c", "d", "g", "h"]); @@ -126,7 +126,7 @@ fn get_opened_all_opened() { opened.insert(vec!["b", "d"]); let result = flatten(&opened, &items); let result_text = result - .iter() + .into_iter() .map(|flattened| flattened.item.identifier) .collect::>(); assert_eq!(result_text, ["a", "b", "c", "d", "e", "f", "g", "h"]); diff --git a/src/state.rs b/src/state.rs index 09ba374..e4f3980 100644 --- a/src/state.rs +++ b/src/state.rs @@ -112,8 +112,7 @@ where pub fn select_first(&mut self, items: &[Item]) -> bool { let identifier = items .first() - .map(|item| vec![item.identifier.clone()]) - .unwrap_or_default(); + .map_or(Vec::new(), |item| vec![item.identifier.clone()]); self.select(identifier) } @@ -123,9 +122,9 @@ where pub fn select_last(&mut self, items: &[Item]) -> bool { let visible = self.flatten(items); let new_identifier = visible + .into_iter() .last() - .map(|flattened| flattened.identifier.clone()) - .unwrap_or_default(); + .map_or(Vec::new(), |flattened| flattened.identifier); self.select(new_identifier) } @@ -138,9 +137,9 @@ where let visible = self.flatten(items); let new_index = new_index.min(visible.len().saturating_sub(1)); let new_identifier = visible - .get(new_index) - .map(|flattened| flattened.identifier.clone()) - .unwrap_or_default(); + .into_iter() + .nth(new_index) + .map_or(Vec::new(), |flattened| flattened.identifier); self.select(new_identifier) } @@ -178,9 +177,9 @@ where .position(|flattened| flattened.identifier == current_identifier); let new_index = change_function(current_index).min(visible.len().saturating_sub(1)); let new_identifier = visible - .get(new_index) - .map(|flattened| flattened.identifier.clone()) - .unwrap_or_default(); + .into_iter() + .nth(new_index) + .map_or(Vec::new(), |flattened| flattened.identifier); self.select(new_identifier) }