text: // 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}
  }
  