trait Fooer { fn foo(&self) -> String; } struct Foo; impl Fooer for Foo { fn foo(&self) -> String { String::from_str("Hello World") } } fn getfoo(g: T) -> String where T: Fooer { g.foo() } fn main() { let g = Foo; println!("{}", getfoo(g)); }