// Checks whether borrowing is suggested when a trait bound is not satisfied // for found type `T`, but is for `&/&mut T`. fn main() { let f = Fancy{}; let o = Other::new(f); //~^ ERROR: the trait bound `Fancy: SomeTrait` is not satisfied [E0277] } struct Fancy {} impl <'a> SomeTrait for &'a Fancy { } trait SomeTrait {} struct Other<'a, G> { a: &'a str, g: G, } // Broadly copied from https://docs.rs/petgraph/0.5.1/src/petgraph/dot.rs.html#70 impl<'a, G> Other<'a, G> where G: SomeTrait, { pub fn new(g: G) -> Self { Other { a: "hi", g: g, } } }