trait bar { fn dup() -> self; fn blah(); } impl int: bar { fn dup() -> int { self } fn blah() {} } impl uint: bar { fn dup() -> uint { self } fn blah() {} } fn main() { 10.dup::(); //~ ERROR does not take type parameters 10.blah::(); //~ ERROR incorrect number of type parameters (10 as bar).dup(); //~ ERROR contains a self-type }