I added a custom attribute syntax extension to my example gist https://gist.github.com/Kimundi/9683769.

It implements a `#[iterable]` attribute that you'd need to put on every implementation of `Iterator` like this:

```
#[iterable]
impl<T> Iterator<T> for MyIter<T> {
    fn next(&mut self) -> Option<T> { ... }
}
```

It would expand to this trivial implementation:

#[iterable]
impl<T> Iterator<T> for MyIter<T> {
    fn next(&mut self) -> Option<T> { ... }
}
impl<T> Iterable<T, MyIter<T>> for MyIter<T> {
    fn into_iter(self) -> MyIter<T> { self }
}
```