package radix
import "github.com/gohugoio/go-radix"
Index ¶
- type Tree
- func New[T any]() *Tree[T]
- func NewFromMap[T any](m map[string]T) *Tree[T]
- func (t *Tree[T]) Delete(s string) (T, bool)
- func (t *Tree[T]) DeletePrefix(s string) int
- func (t *Tree[T]) Get(s string) (T, bool)
- func (t *Tree[T]) Insert(s string, v T) (T, bool)
- func (t *Tree[T]) Len() int
- func (t *Tree[T]) LongestPrefix(s string) (string, T, bool)
- func (t *Tree[T]) Maximum() (string, T, bool)
- func (t *Tree[T]) Minimum() (string, T, bool)
- func (t *Tree[T]) ToMap() map[string]T
- func (t *Tree[T]) Walk(h WalkHandler[T]) error
- func (t *Tree[T]) WalkPath(path string, h WalkHandler[T]) error
- func (t *Tree[T]) WalkPrefix(prefix string, h WalkHandler[T]) error
- type WalkFlag
- func (w WalkFlag) ShouldSet() bool
- func (w WalkFlag) ShouldSkip() bool
- func (w WalkFlag) ShouldStop() bool
- type WalkFn
- func (wf WalkFn[T]) Check(s string) (WalkFlag, error)
- func (wf WalkFn[T]) Handle(s string, v T) (WalkFlag, T, error)
- type WalkHandler
Types ¶
type Tree ¶
type Tree[T any] struct { // contains filtered or unexported fields }
Tree implements a radix tree. This can be treated as a Dictionary abstract data type. The main advantage over a standard hash map is prefix-based lookups and ordered iteration,
func New ¶
New returns an empty Tree
func NewFromMap ¶
NewFromMap returns a new tree containing the keys from an existing map
func (*Tree[T]) Delete ¶
Delete is used to delete a key, returning the previous value and if it was deleted
func (*Tree[T]) DeletePrefix ¶
DeletePrefix is used to delete the subtree under a prefix Returns how many nodes were deleted Use this to delete large subtrees efficiently
func (*Tree[T]) Get ¶
Get is used to lookup a specific key, returning the value and if it was found
func (*Tree[T]) Insert ¶
Insert is used to add a newentry or update an existing entry. Returns true if an existing record is updated.
func (*Tree[T]) Len ¶
Len is used to return the number of elements in the tree
func (*Tree[T]) LongestPrefix ¶
LongestPrefix is like Get, but instead of an exact match, it will return the longest prefix match.
func (*Tree[T]) Maximum ¶
Maximum is used to return the maximum value in the tree
func (*Tree[T]) Minimum ¶
Minimum is used to return the minimum value in the tree
func (*Tree[T]) ToMap ¶
ToMap is used to walk the tree and convert it into a map
func (*Tree[T]) Walk ¶
func (t *Tree[T]) Walk(h WalkHandler[T]) error
Walk is used to walk the tree
func (*Tree[T]) WalkPath ¶
func (t *Tree[T]) WalkPath(path string, h WalkHandler[T]) error
WalkPath is used to walk the tree, but only visiting nodes from the root down to a given leaf. Where WalkPrefix walks all the entries *under* the given prefix, this walks the entries *above* the given prefix.
func (*Tree[T]) WalkPrefix ¶
func (t *Tree[T]) WalkPrefix(prefix string, h WalkHandler[T]) error
WalkPrefix is used to walk the tree under a prefix
type WalkFlag ¶
type WalkFlag uint32
WalkFlag is a bitmask return value for Walk functions.
const ( WalkContinue WalkFlag = 0 WalkSkip WalkFlag = 1 << 0 WalkStop WalkFlag = 1 << 1 WalkSet WalkFlag = 1 << 2 )
func (WalkFlag) ShouldSet ¶
ShouldSet returns true if the walk function wants to set a new value.
func (WalkFlag) ShouldSkip ¶
ShouldSkip returns true if the walk should skip this node.
func (WalkFlag) ShouldStop ¶
ShouldStop returns true if the walk should terminate.
type WalkFn ¶
WalkFn is used when walking the tree. Takes a key and value, returning a WalkFlag to indicate how to proceed and possibly a new value to set.
func (WalkFn[T]) Check ¶
func (WalkFn[T]) Handle ¶
type WalkHandler ¶
type WalkHandler[T any] interface { Check(s string) (WalkFlag, error) Handle(s string, v T) (WalkFlag, T, error) }
WalkHandler is the handler passed to Walk functions. When split into two steps, this allows us to walk the keys withut reading the values.
Source Files ¶
- Version
- v1.2.0 (latest)
- Published
- Nov 24, 2025
- Platform
- linux/amd64
- Imports
- 2 packages
- Last checked
- 1 week ago –
Tools for package owners.