mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 04:57:19 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			32 lines
		
	
	
		
			648 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			648 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
| //! Test basic trait implementation syntax for both simple and generic types.
 | |
| 
 | |
| //@ run-pass
 | |
| 
 | |
| use std::fmt;
 | |
| 
 | |
| struct Thingy {
 | |
|     x: isize,
 | |
|     y: isize,
 | |
| }
 | |
| 
 | |
| impl fmt::Debug for Thingy {
 | |
|     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
 | |
|         write!(f, "{{ x: {:?}, y: {:?} }}", self.x, self.y)
 | |
|     }
 | |
| }
 | |
| 
 | |
| struct PolymorphicThingy<T> {
 | |
|     x: T,
 | |
| }
 | |
| 
 | |
| impl<T: fmt::Debug> fmt::Debug for PolymorphicThingy<T> {
 | |
|     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
 | |
|         write!(f, "{:?}", self.x)
 | |
|     }
 | |
| }
 | |
| 
 | |
| pub fn main() {
 | |
|     println!("{:?}", Thingy { x: 1, y: 2 });
 | |
|     println!("{:?}", PolymorphicThingy { x: Thingy { x: 1, y: 2 } });
 | |
| }
 | 
