diff --git a/src/service/rooms/event_handler/mod.rs b/src/service/rooms/event_handler/mod.rs index 754365c3..e523ce79 100644 --- a/src/service/rooms/event_handler/mod.rs +++ b/src/service/rooms/event_handler/mod.rs @@ -375,7 +375,7 @@ impl Service { // auth events debug!("Checking based on auth events"); // Build map of auth events - let mut auth_events = HashMap::new(); + let mut auth_events = HashMap::with_capacity(incoming_pdu.auth_events.len()); for id in &incoming_pdu.auth_events { let Some(auth_event) = services().rooms.timeline.get_pdu(id)? else { warn!("Could not find auth event {}", id); @@ -814,7 +814,7 @@ impl Service { &self, incoming_pdu: &Arc, room_id: &RoomId, room_version_id: &RoomVersionId, ) -> Result>>> { debug!("Calculating state at event using state res"); - let mut extremity_sstatehashes = HashMap::new(); + let mut extremity_sstatehashes = HashMap::with_capacity(incoming_pdu.prev_events.len()); let mut okay = true; for prev_eventid in &incoming_pdu.prev_events { @@ -949,7 +949,7 @@ impl Service { .fetch_and_handle_outliers(origin, &collect, create_event, room_id, room_version_id, pub_key_map) .await; - let mut state: HashMap<_, Arc> = HashMap::new(); + let mut state: HashMap<_, Arc> = HashMap::with_capacity(state_vec.len()); for (pdu, _) in state_vec { let state_key = pdu .state_key @@ -1196,7 +1196,7 @@ impl Service { Vec>, HashMap, (Arc, BTreeMap)>, )> { - let mut graph: HashMap, _> = HashMap::new(); + let mut graph: HashMap, _> = HashMap::with_capacity(initial_set.len()); let mut eventid_info = HashMap::new(); let mut todo_outlier_stack: Vec> = initial_set; @@ -1242,7 +1242,7 @@ impl Service { .flatten() }) { if pdu.origin_server_ts > first_pdu_in_room.origin_server_ts { - amount += 1; + amount = amount.saturating_add(1); for prev_prev in &pdu.prev_events { if !graph.contains_key(prev_prev) { todo_outlier_stack.push(prev_prev.clone());