|
- // Copyright (c) 2014, Suryandaru Triandana <syndtr@gmail.com>
- // All rights reserved.
- //
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
-
- package util
-
- // Range is a key range.
- type Range struct {
- // Start of the key range, include in the range.
- Start []byte
-
- // Limit of the key range, not include in the range.
- Limit []byte
- }
-
- // BytesPrefix returns key range that satisfy the given prefix.
- // This only applicable for the standard 'bytes comparer'.
- func BytesPrefix(prefix []byte) *Range {
- var limit []byte
- for i := len(prefix) - 1; i >= 0; i-- {
- c := prefix[i]
- if c < 0xff {
- limit = make([]byte, i+1)
- copy(limit, prefix)
- limit[i] = c + 1
- break
- }
- }
- return &Range{prefix, limit}
- }
|