1 package request_strategy
4 "github.com/ajwerner/btree"
7 type ajwernerBtree struct {
8 btree btree.Set[pieceRequestOrderItem]
11 var _ Btree = (*ajwernerBtree)(nil)
13 func NewAjwernerBtree() *ajwernerBtree {
14 return &ajwernerBtree{
15 btree: btree.MakeSet(func(t, t2 pieceRequestOrderItem) int {
16 return pieceOrderLess(&t, &t2).OrderingInt()
21 func mustValue[V any](b bool, panicValue V) {
27 func (a *ajwernerBtree) Delete(item pieceRequestOrderItem) {
28 mustValue(a.btree.Delete(item), item)
31 func (a *ajwernerBtree) Add(item pieceRequestOrderItem) {
32 _, overwrote := a.btree.Upsert(item)
33 mustValue(!overwrote, item)
36 func (a *ajwernerBtree) Scan(f func(pieceRequestOrderItem) bool) {
37 it := a.btree.Iterator()
39 for it.First(); it.Valid(); it.Next() {