mirror of https://github.com/hashicorp/consul
28 lines
482 B
Go
28 lines
482 B
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: BUSL-1.1
|
|
|
|
package structs
|
|
|
|
import "math/rand"
|
|
|
|
type RecursorStrategy string
|
|
|
|
const (
|
|
RecursorStrategySequential RecursorStrategy = "sequential"
|
|
RecursorStrategyRandom RecursorStrategy = "random"
|
|
)
|
|
|
|
func (s RecursorStrategy) Indexes(max int) []int {
|
|
switch s {
|
|
case RecursorStrategyRandom:
|
|
return rand.Perm(max)
|
|
default:
|
|
idxs := make([]int, max)
|
|
for i := range idxs {
|
|
idxs[i] = i
|
|
}
|
|
return idxs
|
|
|
|
}
|
|
}
|