aboutsummaryrefslogtreecommitdiffhomepage
path: root/vendor/github.com/zclconf/go-cty/cty/set/rules.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/zclconf/go-cty/cty/set/rules.go')
-rw-r--r--vendor/github.com/zclconf/go-cty/cty/set/rules.go25
1 files changed, 25 insertions, 0 deletions
diff --git a/vendor/github.com/zclconf/go-cty/cty/set/rules.go b/vendor/github.com/zclconf/go-cty/cty/set/rules.go
new file mode 100644
index 0000000..7200184
--- /dev/null
+++ b/vendor/github.com/zclconf/go-cty/cty/set/rules.go
@@ -0,0 +1,25 @@
1package set
2
3// Rules represents the operations that define membership for a Set.
4//
5// Each Set has a Rules instance, whose methods must satisfy the interface
6// contracts given below for any value that will be added to the set.
7type Rules interface {
8 // Hash returns an int that somewhat-uniquely identifies the given value.
9 //
10 // A good hash function will minimize collisions for values that will be
11 // added to the set, though collisions *are* permitted. Collisions will
12 // simply reduce the efficiency of operations on the set.
13 Hash(interface{}) int
14
15 // Equivalent returns true if and only if the two values are considered
16 // equivalent for the sake of set membership. Two values that are
17 // equivalent cannot exist in the set at the same time, and if two
18 // equivalent values are added it is undefined which one will be
19 // returned when enumerating all of the set members.
20 //
21 // Two values that are equivalent *must* result in the same hash value,
22 // though it is *not* required that two values with the same hash value
23 // be equivalent.
24 Equivalent(interface{}, interface{}) bool
25}