From cc9336e4441ebb49456819415c304018825ebff6 Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Tue, 31 Aug 2021 19:12:30 +0200 Subject: [PATCH] state-res: Take ownership of events to sort in reverse_topological_power_sort Avoids clones. --- crates/ruma-state-res/src/lib.rs | 10 +++++----- crates/ruma-state-res/tests/event_sorting.rs | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/crates/ruma-state-res/src/lib.rs b/crates/ruma-state-res/src/lib.rs index 60b92961..27ee673c 100644 --- a/crates/ruma-state-res/src/lib.rs +++ b/crates/ruma-state-res/src/lib.rs @@ -115,7 +115,7 @@ impl StateResolution { // Sort the control events based on power_level/clock/event_id and outgoing/incoming edges let sorted_control_levels = StateResolution::reverse_topological_power_sort( - &control_events, + control_events, &all_conflicted, &fetch_event, )?; @@ -231,7 +231,7 @@ impl StateResolution { /// The power level is negative because a higher power level is equated to an /// earlier (further back in time) origin server timestamp. pub fn reverse_topological_power_sort( - events_to_sort: &[EventId], + events_to_sort: Vec, auth_diff: &HashSet, fetch_event: F, ) -> Result> @@ -242,7 +242,7 @@ impl StateResolution { debug!("reverse topological sort of power events"); let mut graph = HashMap::new(); - for event_id in events_to_sort.iter() { + for event_id in events_to_sort { StateResolution::add_event_and_auth_chain_to_graph( &mut graph, event_id, @@ -608,14 +608,14 @@ impl StateResolution { fn add_event_and_auth_chain_to_graph( graph: &mut HashMap>, - event_id: &EventId, + event_id: EventId, auth_diff: &HashSet, fetch_event: F, ) where E: Event, F: Fn(&EventId) -> Option>, { - let mut state = vec![event_id.clone()]; + let mut state = vec![event_id]; while let Some(eid) = state.pop() { graph.entry(eid.clone()).or_default(); // Prefer the store to event as the store filters dedups the events diff --git a/crates/ruma-state-res/tests/event_sorting.rs b/crates/ruma-state-res/tests/event_sorting.rs index 528c4a7a..b3b8d6c5 100644 --- a/crates/ruma-state-res/tests/event_sorting.rs +++ b/crates/ruma-state-res/tests/event_sorting.rs @@ -27,7 +27,7 @@ fn test_event_sort() { .collect::>(); let sorted_power_events = - StateResolution::reverse_topological_power_sort(&power_events, &auth_chain, |id| { + StateResolution::reverse_topological_power_sort(power_events, &auth_chain, |id| { events.get(id).map(Arc::clone) }) .unwrap();