#![crate_name = "foo"] // @has foo/trait.LendingIterator.html pub trait LendingIterator { // @has - '//*[@id="associatedtype.Item"]//h4[@class="code-header"]' "type Item<'a>where Self: 'a" type Item<'a> where Self: 'a; // @has - '//*[@id="tymethod.next"]//h4[@class="code-header"]' \ // "fn next<'a>(&'a self) -> Self::Item<'a>" // @has - '//*[@id="tymethod.next"]//h4[@class="code-header"]//a[@href="trait.LendingIterator.html#associatedtype.Item"]' \ // "Item" fn next<'a>(&'a self) -> Self::Item<'a>; } // @has foo/trait.LendingIterator.html // @has - '//*[@id="associatedtype.Item-1"]//h4[@class="code-header"]' "type Item<'a> = ()" impl LendingIterator for () { type Item<'a> = (); fn next<'a>(&self) -> () {} } pub struct Infinite(T); // @has foo/trait.LendingIterator.html // @has - '//*[@id="associatedtype.Item-2"]//h4[@class="code-header"]' "type Item<'a>where Self: 'a = &'a T" impl LendingIterator for Infinite { type Item<'a> where Self: 'a = &'a T; fn next<'a>(&'a self) -> Self::Item<'a> { &self.0 } }