package mru // Sync reconciles the order's membership to present. // // Surviving keys keep their relative recency order, // absent keys are dropped, // and newly present keys are appended after the survivors. func (order *Order[K]) Sync(present map[K]struct{}) { order.mu.Lock() defer order.mu.Unlock() keys := order.Keys() next := make([]K, 0, len(present)) seen := make(map[K]struct{}, len(present)) for _, key := range keys { if _, ok := present[key]; ok { next = append(next, key) seen[key] = struct{}{} } } for key := range present { if _, ok := seen[key]; !ok { next = append(next, key) } } order.snapshot.Store(&next) }