in lru.go [243:266]
func (lru *LRU[K, V]) move(to, from uint32) {
if to == from {
return
}
if from == lru.head {
lru.head = to
}
prev := lru.elements[from].prev
next := lru.elements[from].next
lru.elements[prev].next = to
lru.elements[next].prev = to
prev = lru.elements[from].prevBucket
next = lru.elements[from].nextBucket
lru.elements[prev].nextBucket = to
lru.elements[next].prevBucket = to
lru.elements[to] = lru.elements[from]
if lru.buckets[lru.elements[to].bucketPos] == from {
lru.buckets[lru.elements[to].bucketPos] = to
}
}