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