plar/go-adaptive-radix-tree

Question:how to terminate the ForEachPrefix function after running for a given times

SwaggieHu opened this issue · 4 comments

I set the return value false in the callback function after running for a given times but it doesn't work , quite confused

plar commented

code:
tree := art.New()
tree.Insert(art.Key("America#California#Irvine"), 1)
tree.Insert(art.Key("America#California#Sanfrancisco"), 2)
tree.Insert(art.Key("America#California#LosAngeles"), 3)

cnt := 0

tree.ForEachPrefix(art.Key("Amer"), func(node art.Node) (cont bool) {
	fmt.Println(node.Value())
	cnt += 1
	if cnt > 2 {
		return false
	}
	return true
})

problem: it is supposed to print and 1 since I return false when cnt = 2, but the result is ,1,3,2

plar commented

Thanks for the bug report, nice catch! The bug has been fixed.

Thanks! Looks like you've made a bunch of fixes, improvements and new release! 🎉 I will have to work on integrating your changes into Bitcask and making a new version there too! Thanks for maintaining this nice library!