Untangling lifetimes

Oops, I hadn't thought about outliving the Iterator. I see, if it didn't have to outlive the iterator the trait would be something like this right?:

trait Iterator {
    type Item<'a>;
    fn next(&'a mut self) -> Self::Item<'a>;
}

Which would then cause the borrow checker to enforce that you had dropped the returned item before the next next call.