Earlier quoted context omitted.
Well, the first two are really just the same thing :P
Eh, with the new oprhan/impl rules associated and uh... not... associated(...?) types have developed quite a schism.
fn foo>(elem: T) { ... }
fn foo(elem: T) where T: MyTrait { ... }
and fn foo>(elem: T) { ... }
fn foo(elem: T) where T: MyTrait { ... }