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?