trait Product { fn product() -> int; } struct Foo { x: int; y: int; } impl Foo { fn sum() -> int { self.x + self.y } } impl Foo : Product { fn product() -> int { self.x * self.y } } fn Foo(x: int, y: int) -> Foo { Foo { x: x, y: y } } fn main() { let foo = Foo(3, 20); io::println(fmt!("%d %d", foo.sum(), foo.product())); }