diff options
Diffstat (limited to 'vendor/github.com/tchap/go-patricia/patricia/patricia.go')
-rw-r--r-- | vendor/github.com/tchap/go-patricia/patricia/patricia.go | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/vendor/github.com/tchap/go-patricia/patricia/patricia.go b/vendor/github.com/tchap/go-patricia/patricia/patricia.go index a1fc53d5d..7b9975e38 100644 --- a/vendor/github.com/tchap/go-patricia/patricia/patricia.go +++ b/vendor/github.com/tchap/go-patricia/patricia/patricia.go @@ -77,6 +77,18 @@ func MaxChildrenPerSparseNode(value int) Option { } } +// Clone makes a copy of an existing trie. +// Items stored in both tries become shared, obviously. +func (trie *Trie) Clone() *Trie { + return &Trie{ + prefix: append(Prefix(nil), trie.prefix...), + item: trie.item, + maxPrefixPerNode: trie.maxPrefixPerNode, + maxChildrenPerSparseNode: trie.maxChildrenPerSparseNode, + children: trie.children.clone(), + } +} + // Item returns the item stored in the root of this trie. func (trie *Trie) Item() Item { return trie.item |