From cb2389efa53fa15588da895541b43ce497ca15c7 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 22 Sep 2022 23:57:33 +0530 Subject: [PATCH] Use the standard library deque Drops a dependency --- go.mod | 1 - go.sum | 2 -- tools/utils/cache.go | 11 +++++------ 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index badc3391d..5a78f0570 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,6 @@ go 1.19 require ( github.com/ALTree/bigfloat v0.0.0-20220102081255-38c8b72a9924 - github.com/gammazero/deque v0.2.0 github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 github.com/google/uuid v1.3.0 github.com/jamesruan/go-rfc1924 v0.0.0-20170108144916-2767ca7c638f diff --git a/go.sum b/go.sum index aa45016c9..f70095672 100644 --- a/go.sum +++ b/go.sum @@ -1,8 +1,6 @@ github.com/ALTree/bigfloat v0.0.0-20220102081255-38c8b72a9924 h1:DG4UyTVIujioxwJc8Zj8Nabz1L1wTgQ/xNBSQDfdP3I= github.com/ALTree/bigfloat v0.0.0-20220102081255-38c8b72a9924/go.mod h1:+NaH2gLeY6RPBPPQf4aRotPPStg+eXc8f9ZaE4vRfD4= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/gammazero/deque v0.2.0 h1:SkieyNB4bg2/uZZLxvya0Pq6diUlwx7m2TeT7GAIWaA= -github.com/gammazero/deque v0.2.0/go.mod h1:LFroj8x4cMYCukHJDbxFCkT+r9AndaJnFMuZDV34tuU= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= diff --git a/tools/utils/cache.go b/tools/utils/cache.go index 20814a8d8..e2aa92200 100644 --- a/tools/utils/cache.go +++ b/tools/utils/cache.go @@ -3,10 +3,9 @@ package utils import ( + "container/list" "fmt" "sync" - - "github.com/gammazero/deque" ) var _ = fmt.Print @@ -15,11 +14,11 @@ type LRUCache[K comparable, V any] struct { data map[K]V lock sync.RWMutex max_size int - lru deque.Deque[K] + lru *list.List } func NewLRUCache[K comparable, V any](max_size int) *LRUCache[K, V] { - ans := LRUCache[K, V]{data: map[K]V{}, max_size: max_size} + ans := LRUCache[K, V]{data: map[K]V{}, max_size: max_size, lru: list.New()} return &ans } @@ -36,8 +35,8 @@ func (self *LRUCache[K, V]) GetOrCreate(key K, create func(key K) (V, error)) (V self.data[key] = ans self.lru.PushFront(key) if self.max_size > 0 && self.lru.Len() > self.max_size { - k := self.lru.PopBack() - delete(self.data, k) + k := self.lru.Remove(self.lru.Back()) + delete(self.data, k.(K)) } self.lock.Unlock() }