github.com/anacrolix/torrent@v1.61.0/roaring.go (about) 1 package torrent 2 3 import typedRoaring "github.com/anacrolix/torrent/typed-roaring" 4 5 // Return the number of bits set in the range. To do this we need the rank of the item before the 6 // first, and the rank of the last item. An off-by-one minefield. Hopefully I haven't missed 7 // something in roaring's API that provides this. 8 func roaringBitmapRangeCardinality[T typedRoaring.BitConstraint](bm interface{ Rank(T) uint64 }, start, end T) (card uint64) { 9 card = bm.Rank(end - 1) 10 if start != 0 { 11 card -= bm.Rank(start - 1) 12 } 13 return 14 }