...

Source file src/github.com/hashicorp/golang-lru/v2/simplelru/lru_interface.go

Documentation: github.com/hashicorp/golang-lru/v2/simplelru

     1  // Copyright (c) HashiCorp, Inc.
     2  // SPDX-License-Identifier: MPL-2.0
     3  
     4  // Package simplelru provides simple LRU implementation based on build-in container/list.
     5  package simplelru
     6  
     7  // LRUCache is the interface for simple LRU cache.
     8  type LRUCache[K comparable, V any] interface {
     9  	// Adds a value to the cache, returns true if an eviction occurred and
    10  	// updates the "recently used"-ness of the key.
    11  	Add(key K, value V) bool
    12  
    13  	// Returns key's value from the cache and
    14  	// updates the "recently used"-ness of the key. #value, isFound
    15  	Get(key K) (value V, ok bool)
    16  
    17  	// Checks if a key exists in cache without updating the recent-ness.
    18  	Contains(key K) (ok bool)
    19  
    20  	// Returns key's value without updating the "recently used"-ness of the key.
    21  	Peek(key K) (value V, ok bool)
    22  
    23  	// Removes a key from the cache.
    24  	Remove(key K) bool
    25  
    26  	// Removes the oldest entry from cache.
    27  	RemoveOldest() (K, V, bool)
    28  
    29  	// Returns the oldest entry from the cache. #key, value, isFound
    30  	GetOldest() (K, V, bool)
    31  
    32  	// Returns a slice of the keys in the cache, from oldest to newest.
    33  	Keys() []K
    34  
    35  	// Values returns a slice of the values in the cache, from oldest to newest.
    36  	Values() []V
    37  
    38  	// Returns the number of items in the cache.
    39  	Len() int
    40  
    41  	// Clears all cache entries.
    42  	Purge()
    43  
    44  	// Resizes cache, returning number evicted
    45  	Resize(int) int
    46  }
    47  

View as plain text