type Node … type Edge … type Graph … type Undirected … type Directed … type Weighter … type NodeAdder … type NodeRemover … type EdgeSetter … type EdgeRemover … type Builder … type UndirectedBuilder … type DirectedBuilder … // Copy copies nodes and edges as undirected edges from the source to the destination // without first clearing the destination. Copy will panic if a node ID in the source // graph matches a node ID in the destination. // // If the source is undirected and the destination is directed both directions will // be present in the destination after the copy is complete. // // If the source is a directed graph, the destination is undirected, and a fundamental // cycle exists with two nodes where the edge weights differ, the resulting destination // graph's edge weight between those nodes is undefined. If there is a defined function // to resolve such conflicts, an Undirect may be used to do this. func Copy(dst Builder, src Graph) { … }