// Copyright (c) 2014, Suryandaru Triandana // 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} }