|  | use std::ops::Deref; | 
|  |  | 
|  | // Cyclic deref with the parent (which is not the top parent). | 
|  | pub struct A; | 
|  | pub struct B; | 
|  | pub struct C; | 
|  |  | 
|  | impl C { | 
|  | pub fn c(&self) {} | 
|  | } | 
|  |  | 
|  | //@ has recursive_deref/struct.A.html '//h3[@class="code-header"]' 'impl Deref for A' | 
|  | //@ has '-' '//*[@class="impl-items"]//*[@id="method.c"]' 'pub fn c(&self)' | 
|  | impl Deref for A { | 
|  | type Target = B; | 
|  |  | 
|  | fn deref(&self) -> &Self::Target { | 
|  | panic!() | 
|  | } | 
|  | } | 
|  |  | 
|  | //@ has recursive_deref/struct.B.html '//h3[@class="code-header"]' 'impl Deref for B' | 
|  | //@ has '-' '//*[@class="impl-items"]//*[@id="method.c"]' 'pub fn c(&self)' | 
|  | impl Deref for B { | 
|  | type Target = C; | 
|  |  | 
|  | fn deref(&self) -> &Self::Target { | 
|  | panic!() | 
|  | } | 
|  | } | 
|  |  | 
|  | //@ has recursive_deref/struct.C.html '//h3[@class="code-header"]' 'impl Deref for C' | 
|  | impl Deref for C { | 
|  | type Target = B; | 
|  |  | 
|  | fn deref(&self) -> &Self::Target { | 
|  | panic!() | 
|  | } | 
|  | } | 
|  |  | 
|  | // Cyclic deref with the grand-parent (which is not the top parent). | 
|  | pub struct D; | 
|  | pub struct E; | 
|  | pub struct F; | 
|  | pub struct G; | 
|  |  | 
|  | impl G { | 
|  | // There is no "self" parameter so it shouldn't be listed! | 
|  | pub fn g() {} | 
|  | } | 
|  |  | 
|  | //@ has recursive_deref/struct.D.html '//h3[@class="code-header"]' 'impl Deref for D' | 
|  | // We also check that `G::g` method isn't rendered because there is no `self` argument. | 
|  | //@ !has '-' '//*[@id="deref-methods-G"]' '' | 
|  | impl Deref for D { | 
|  | type Target = E; | 
|  |  | 
|  | fn deref(&self) -> &Self::Target { | 
|  | panic!() | 
|  | } | 
|  | } | 
|  |  | 
|  | //@ has recursive_deref/struct.E.html '//h3[@class="code-header"]' 'impl Deref for E' | 
|  | // We also check that `G::g` method isn't rendered because there is no `self` argument. | 
|  | //@ !has '-' '//*[@id="deref-methods-G"]' '' | 
|  | impl Deref for E { | 
|  | type Target = F; | 
|  |  | 
|  | fn deref(&self) -> &Self::Target { | 
|  | panic!() | 
|  | } | 
|  | } | 
|  |  | 
|  | //@ has recursive_deref/struct.F.html '//h3[@class="code-header"]' 'impl Deref for F' | 
|  | // We also check that `G::g` method isn't rendered because there is no `self` argument. | 
|  | //@ !has '-' '//*[@id="deref-methods-G"]' '' | 
|  | impl Deref for F { | 
|  | type Target = G; | 
|  |  | 
|  | fn deref(&self) -> &Self::Target { | 
|  | panic!() | 
|  | } | 
|  | } | 
|  |  | 
|  | //@ has recursive_deref/struct.G.html '//h3[@class="code-header"]' 'impl Deref for G' | 
|  | impl Deref for G { | 
|  | type Target = E; | 
|  |  | 
|  | fn deref(&self) -> &Self::Target { | 
|  | panic!() | 
|  | } | 
|  | } | 
|  |  | 
|  | // Cyclic deref with top parent. | 
|  | pub struct H; | 
|  | pub struct I; | 
|  |  | 
|  | impl I { | 
|  | // There is no "self" parameter so it shouldn't be listed! | 
|  | pub fn i() {} | 
|  | } | 
|  |  | 
|  | //@ has recursive_deref/struct.H.html '//h3[@class="code-header"]' 'impl Deref for H' | 
|  | //@ !has '-' '//*[@id="deref-methods-I"]' '' | 
|  | impl Deref for H { | 
|  | type Target = I; | 
|  |  | 
|  | fn deref(&self) -> &Self::Target { | 
|  | panic!() | 
|  | } | 
|  | } | 
|  |  | 
|  | //@ has recursive_deref/struct.I.html '//h3[@class="code-header"]' 'impl Deref for I' | 
|  | impl Deref for I { | 
|  | type Target = H; | 
|  |  | 
|  | fn deref(&self) -> &Self::Target { | 
|  | panic!() | 
|  | } | 
|  | } |