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 result = flatten(&opened, &items);
let result_text = result
.iter()
.into_iter()
.map(|flattened| flattened.item.identifier)
.collect::<Vec<_>>();
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::<Vec<_>>();
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::<Vec<_>>();
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::<Vec<_>>();
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 {
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<Identifier>]) -> 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)
}