Skip to content

Commit 76a8e05

Browse files
committed
Avoid allocating Vec for a single result
1 parent b5f0541 commit 76a8e05

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

lightning/src/onion_message/messenger.rs

+14-4
Original file line numberDiff line numberDiff line change
@@ -1479,11 +1479,21 @@ where
14791479
pending_peer_connected_events.shrink_to(10); // Limit total heap usage
14801480
}
14811481

1482-
let res = intercepted_msgs.into_iter().map(|ev| handler.handle_event(ev)).collect::<Vec<_>>();
1483-
drop_handled_events_and_abort!(self, res, 0, self.pending_intercepted_msgs_events);
1482+
if intercepted_msgs.len() == 1 {
1483+
let res = intercepted_msgs.into_iter().next().map(|ev| handler.handle_event(ev));
1484+
drop_handled_events_and_abort!(self, res, 0, self.pending_intercepted_msgs_events);
1485+
} else {
1486+
let res = intercepted_msgs.into_iter().map(|ev| handler.handle_event(ev)).collect::<Vec<_>>();
1487+
drop_handled_events_and_abort!(self, res, 0, self.pending_intercepted_msgs_events);
1488+
};
14841489

1485-
let res = peer_connecteds.into_iter().map(|ev| handler.handle_event(ev)).collect::<Vec<_>>();
1486-
drop_handled_events_and_abort!(self, res, 0, self.pending_peer_connected_events);
1490+
if peer_connecteds.len() == 1 {
1491+
let res = peer_connecteds.into_iter().next().map(|ev| handler.handle_event(ev));
1492+
drop_handled_events_and_abort!(self, res, 0, self.pending_peer_connected_events);
1493+
} else {
1494+
let res = peer_connecteds.into_iter().map(|ev| handler.handle_event(ev)).collect::<Vec<_>>();
1495+
drop_handled_events_and_abort!(self, res, 0, self.pending_peer_connected_events);
1496+
}
14871497

14881498
self.pending_events_processor.store(false, Ordering::Release);
14891499
}

0 commit comments

Comments
 (0)