code: func DelKeyWithPrefix(rm kv.RetrieverMutator, prefix kv.Key) error {
  	var keys []kv.Key
  	iter, err := rm.Iter(prefix, prefix.PrefixNext())
  	if err != nil {
  		return errors.Trace(err)
  	}
  
  	defer iter.Close()
  	for {
  		if err != nil {
  			return errors.Trace(err)
  		}
  
  		if iter.Valid() && iter.Key().HasPrefix(prefix) {
  			keys = append(keys, iter.Key().Clone())
  			err = iter.Next()
  			if err != nil {
  				return errors.Trace(err)
  			}
  		} else {
  			break
  		}
  	}
  
  	for _, key := range keys {
  		err := rm.Delete(key)
  		if err != nil {
  			return errors.Trace(err)
  		}
  	}
  
  	return nil
  }
docs: // DelKeyWithPrefix deletes keys with prefix.