error[E0308]: mismatched types --> $DIR/issue-13853.rs:14:9 | LL | fn nodes<'a, I: Iterator>(&self) -> I | - this type parameter - expected `I` because of return type ... LL | self.iter() | ^^^^^^^^^^^ expected type parameter `I`, found `Iter<'_, N>` | = note: expected type parameter `I` found struct `std::slice::Iter<'_, N>` error[E0599]: no method named `iter` found for reference `&G` in the current scope --> $DIR/issue-13853.rs:27:23 | LL | for node in graph.iter() { | ^^^^ method not found in `&G` error[E0308]: mismatched types --> $DIR/issue-13853.rs:37:13 | LL | iterate(graph); | ------- ^^^^^ | | | | | expected `&_`, found `Vec` | | help: consider borrowing here: `&graph` | arguments to this function are incorrect | = note: expected reference `&_` found struct `Vec` note: function defined here --> $DIR/issue-13853.rs:26:4 | LL | fn iterate>(graph: &G) { | ^^^^^^^ --------- error: aborting due to 3 previous errors Some errors have detailed explanations: E0308, E0599. For more information about an error, try `rustc --explain E0308`.