| //@ 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() {} |