3 // Targetable is an interface implemented by all address types that can be
4 // used as "targets" for selecting sub-graphs of a graph.
5 type Targetable interface {
8 // TargetContains returns true if the receiver is considered to contain
9 // the given other address. Containment, for the purpose of targeting,
10 // means that if a container address is targeted then all of the
11 // addresses within it are also implicitly targeted.
13 // A targetable address always contains at least itself.
14 TargetContains(other Targetable) bool
16 // String produces a string representation of the address that could be
17 // parsed as a HCL traversal and passed to ParseTarget to produce an
22 type targetable struct {
25 func (r targetable) targetableSigil() {