perf: prefer into_iter() over clone()

This commit is contained in:
EdJoPaTo
2024-02-24 01:03:04 +01:00
parent 4130a800b8
commit 86458ffc39
2 changed files with 13 additions and 14 deletions
+4 -4
View File
@@ -85,7 +85,7 @@ fn get_opened_nothing_opened_is_top_level() {
let opened = HashSet::new(); let opened = HashSet::new();
let result = flatten(&opened, &items); let result = flatten(&opened, &items);
let result_text = result let result_text = result
.iter() .into_iter()
.map(|flattened| flattened.item.identifier) .map(|flattened| flattened.item.identifier)
.collect::<Vec<_>>(); .collect::<Vec<_>>();
assert_eq!(result_text, ["a", "b", "h"]); 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"]); opened.insert(vec!["b", "d"]);
let result = flatten(&opened, &items); let result = flatten(&opened, &items);
let result_text = result let result_text = result
.iter() .into_iter()
.map(|flattened| flattened.item.identifier) .map(|flattened| flattened.item.identifier)
.collect::<Vec<_>>(); .collect::<Vec<_>>();
assert_eq!(result_text, ["a", "b", "h"]); assert_eq!(result_text, ["a", "b", "h"]);
@@ -112,7 +112,7 @@ fn get_opened_one_is_opened() {
opened.insert(vec!["b"]); opened.insert(vec!["b"]);
let result = flatten(&opened, &items); let result = flatten(&opened, &items);
let result_text = result let result_text = result
.iter() .into_iter()
.map(|flattened| flattened.item.identifier) .map(|flattened| flattened.item.identifier)
.collect::<Vec<_>>(); .collect::<Vec<_>>();
assert_eq!(result_text, ["a", "b", "c", "d", "g", "h"]); assert_eq!(result_text, ["a", "b", "c", "d", "g", "h"]);
@@ -126,7 +126,7 @@ fn get_opened_all_opened() {
opened.insert(vec!["b", "d"]); opened.insert(vec!["b", "d"]);
let result = flatten(&opened, &items); let result = flatten(&opened, &items);
let result_text = result let result_text = result
.iter() .into_iter()
.map(|flattened| flattened.item.identifier) .map(|flattened| flattened.item.identifier)
.collect::<Vec<_>>(); .collect::<Vec<_>>();
assert_eq!(result_text, ["a", "b", "c", "d", "e", "f", "g", "h"]); assert_eq!(result_text, ["a", "b", "c", "d", "e", "f", "g", "h"]);
+9 -10
View File
@@ -112,8 +112,7 @@ where
pub fn select_first(&mut self, items: &[Item<Identifier>]) -> bool { pub fn select_first(&mut self, items: &[Item<Identifier>]) -> bool {
let identifier = items let identifier = items
.first() .first()
.map(|item| vec![item.identifier.clone()]) .map_or(Vec::new(), |item| vec![item.identifier.clone()]);
.unwrap_or_default();
self.select(identifier) self.select(identifier)
} }
@@ -123,9 +122,9 @@ where
pub fn select_last(&mut self, items: &[Item<Identifier>]) -> bool { pub fn select_last(&mut self, items: &[Item<Identifier>]) -> bool {
let visible = self.flatten(items); let visible = self.flatten(items);
let new_identifier = visible let new_identifier = visible
.into_iter()
.last() .last()
.map(|flattened| flattened.identifier.clone()) .map_or(Vec::new(), |flattened| flattened.identifier);
.unwrap_or_default();
self.select(new_identifier) self.select(new_identifier)
} }
@@ -138,9 +137,9 @@ where
let visible = self.flatten(items); let visible = self.flatten(items);
let new_index = new_index.min(visible.len().saturating_sub(1)); let new_index = new_index.min(visible.len().saturating_sub(1));
let new_identifier = visible let new_identifier = visible
.get(new_index) .into_iter()
.map(|flattened| flattened.identifier.clone()) .nth(new_index)
.unwrap_or_default(); .map_or(Vec::new(), |flattened| flattened.identifier);
self.select(new_identifier) self.select(new_identifier)
} }
@@ -178,9 +177,9 @@ where
.position(|flattened| flattened.identifier == current_identifier); .position(|flattened| flattened.identifier == current_identifier);
let new_index = change_function(current_index).min(visible.len().saturating_sub(1)); let new_index = change_function(current_index).min(visible.len().saturating_sub(1));
let new_identifier = visible let new_identifier = visible
.get(new_index) .into_iter()
.map(|flattened| flattened.identifier.clone()) .nth(new_index)
.unwrap_or_default(); .map_or(Vec::new(), |flattened| flattened.identifier);
self.select(new_identifier) self.select(new_identifier)
} }