// run-rustfix
// check-only

#[derive(Debug)]
struct Demo {
    a: String
}

trait GetString {
    fn get_a(&self) -> &String;
}

trait UseString: std::fmt::Debug {
    fn use_string(&self) {
        println!("{:?}", self.get_a()); //~ ERROR no method named `get_a` found
    }
}

trait UseString2 {
    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() {}
