| 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!() | |
| } | |
| } |