Skip to content

Commit 8f4aa90

Browse files
committed
Deduplicate unique function
1 parent 4742d3d commit 8f4aa90

File tree

1 file changed

+14
-21
lines changed

1 file changed

+14
-21
lines changed

pineappl/src/grid.rs

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -937,31 +937,24 @@ impl Grid {
937937
bins: &BinLimits,
938938
entries: &[LumiEntry],
939939
) -> (Vec<Order>, Vec<LumiEntry>) {
940-
let mut new_orders: Vec<Order> = Vec::new();
941-
let new_bins = bins.bins() - self.bin_limits.bins();
942-
let mut new_entries: Vec<LumiEntry> = Vec::new();
940+
fn unique<T: Clone + PartialEq>(current: &[T], update: &[T]) -> Vec<T> {
941+
let mut new = Vec::new();
943942

944-
for order in orders.iter() {
945-
if !self
946-
.orders
947-
.iter()
948-
.chain(new_orders.iter())
949-
.any(|x| x == order)
950-
{
951-
new_orders.push(order.clone());
943+
for el in update.iter() {
944+
if !current
945+
.iter()
946+
.chain(new.iter())
947+
.any(|x| x == el)
948+
{
949+
new.push((*el).clone());
950+
}
952951
}
952+
new
953953
}
954954

955-
for entry in entries.iter() {
956-
if !self
957-
.lumi
958-
.iter()
959-
.chain(new_entries.iter())
960-
.any(|y| y == entry)
961-
{
962-
new_entries.push(entry.clone());
963-
}
964-
}
955+
let mut new_orders = unique(&self.orders, &orders);
956+
let new_bins = bins.bins() - self.bin_limits.bins();
957+
let mut new_entries = unique(&self.lumi, &entries);
965958

966959
if !new_orders.is_empty() || !new_entries.is_empty() || (new_bins != 0) {
967960
self.increase_shape(&(new_orders.len(), new_bins, new_entries.len()));

0 commit comments

Comments
 (0)