mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-29 20:15:27 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			121 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			121 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| 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!()
 | |
|     }
 | |
| }
 | 
