github.com/paultyng/terraform@v0.6.11-0.20180227224804-66ff8f8bed40/dag/edge.go (about) 1 package dag 2 3 import ( 4 "fmt" 5 ) 6 7 // Edge represents an edge in the graph, with a source and target vertex. 8 type Edge interface { 9 Source() Vertex 10 Target() Vertex 11 12 Hashable 13 } 14 15 // BasicEdge returns an Edge implementation that simply tracks the source 16 // and target given as-is. 17 func BasicEdge(source, target Vertex) Edge { 18 return &basicEdge{S: source, T: target} 19 } 20 21 // basicEdge is a basic implementation of Edge that has the source and 22 // target vertex. 23 type basicEdge struct { 24 S, T Vertex 25 } 26 27 func (e *basicEdge) Hashcode() interface{} { 28 return fmt.Sprintf("%p-%p", e.S, e.T) 29 } 30 31 func (e *basicEdge) Source() Vertex { 32 return e.S 33 } 34 35 func (e *basicEdge) Target() Vertex { 36 return e.T 37 }