| //@ run-rustfix | 
 | // check-only | 
 | #![allow(dead_code)] | 
 |  | 
 | #[derive(Debug)] | 
 | struct Demo { | 
 |     a: String | 
 | } | 
 |  | 
 | trait GetString { | 
 |     fn get_a(&self) -> &String; | 
 | } | 
 |  | 
 | trait UseString: std::fmt::Debug + GetString { | 
 |     fn use_string(&self) { | 
 |         println!("{:?}", self.get_a()); //~ ERROR no method named `get_a` found | 
 |     } | 
 | } | 
 |  | 
 | trait UseString2: GetString { | 
 |     fn use_string(&self) { | 
 |         println!("{:?}", self.get_a()); //~ ERROR no method named `get_a` found | 
 |     } | 
 | } | 
 |  | 
 | impl GetString for Demo { | 
 |     fn get_a(&self) -> &String { | 
 |         &self.a | 
 |     } | 
 | } | 
 |  | 
 | impl UseString for Demo {} | 
 | impl UseString2 for Demo {} | 
 |  | 
 |  | 
 | #[cfg(test)] | 
 | mod tests { | 
 |     use crate::{Demo, UseString}; | 
 |  | 
 |     #[test] | 
 |     fn it_works() { | 
 |         let d = Demo { a: "test".to_string() }; | 
 |         d.use_string(); | 
 |     } | 
 | } | 
 |  | 
 |  | 
 | fn main() {} |