I’m completely baffled trying to figure out the DOT DSL exercise’s requirements from its tests. I hope someone can help.
For instance, given the “builder pattern” requirement illustrated by this passage in the graph_with_attributes test, "Graph"s with_nodes() function needs to return a &mut Graph.
let graph = Graph::new()
.with_nodes(&nodes)
.with_edges(&edges)
.with_attrs(&attrs);
If it is implemented in that way, though, the tests won’t compile, because this line
let graph = Graph::new().with_nodes(&nodes);
is an error: “Temporary value dropped while borrowed”. (That line appears in the tests a lot.)
Another example is the graph_with_one_node test, which starts with
let nodes = vec![Node::new("a")];
let graph = Graph::new().with_nodes(&nodes);
which implies that the “Graph” struct’s with_nodes function should be passed a &Vec<Node>, but then the graph_with_one_node_with_keywords test starts with
let nodes = vec![Node::new("a").with_attrs(&[("color", "green")])];
let graph = Graph::new().with_nodes(&nodes);
which would mean that it takes a &Vec<&mut Node>. I guess there’s some way to accomplish this that I just don’t know about?