···303303 });
304304 };
305305306306+ let did_rkeys: Vec<_> = did_rkeys
307307+ .into_iter()
308308+ .flatten()
309309+ .filter(|(did, _)| dids.contains(did))
310310+ .collect();
311311+306312 let total = did_rkeys.len();
307313 let end = until
308314 .map(|u| std::cmp::min(u as usize, total))
···310316 let begin = end.saturating_sub(limit as usize);
311317 let next = if begin == 0 { None } else { Some(begin as u64) };
312318313313- let alive = did_rkeys.iter().flatten().count();
319319+ let alive = did_rkeys.iter().count();
314320 let gone = total - alive;
315321316322 let items: Vec<_> = did_rkeys[begin..end]
317323 .iter()
318324 .rev()
319319- .flatten()
320325 .filter(|(did, _)| *data.dids.get(did).expect("did must be in dids"))
321326 .map(|(did, rkey)| RecordId {
322327 did: did.clone(),