Move inner auth_chan eval into closure.

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk
2026-03-04 00:14:06 +00:00
parent 2b2c14513f
commit 8c8cc6d91e

View File

@@ -278,35 +278,37 @@ pub fn get_event_auth_chain_ids<'a>(
.collect(),
};
let eval = |auth_events: AuthEvents, mut state: State<_>| {
let push = |auth_event: &OwnedEventId| {
trace!(todo = state.todo.len(), ?auth_event, "push");
state
.todo
.push(self.get_event_auth_event_ids(room_id, auth_event.clone()));
};
let seen = |auth_event: OwnedEventId| {
state
.seen
.insert(auth_event.clone())
.then_some(auth_event)
};
let out = auth_events
.into_iter()
.filter_map(seen)
.inspect(push)
.collect::<AuthEvents>()
.into_iter()
.stream();
(out, state)
};
unfold(state, move |mut state| async move {
match state.todo.next().await {
| None => None,
| Some(Err(_)) => Some((AuthEvents::new().into_iter().stream(), state)),
| Some(Ok(auth_events)) => {
let push = |auth_event: &OwnedEventId| {
trace!(?event_id, ?auth_event, "push");
state
.todo
.push(self.get_event_auth_event_ids(room_id, auth_event.clone()));
};
let seen = |auth_event: OwnedEventId| {
state
.seen
.insert(auth_event.clone())
.then_some(auth_event)
};
let out = auth_events
.into_iter()
.filter_map(seen)
.inspect(push)
.collect::<AuthEvents>()
.into_iter()
.stream();
Some((out, state))
},
| Some(Ok(auth_events)) => Some(eval(auth_events, state)),
}
})
.flatten()