But you had to explicitly define the relationship: "impl Foo for FooFunc"
I would gladly trade for the verboseness of making these relationships explicit if it let me typecheck and refactor with ease.
You're also missing one of the best parts of implicit interfaces - you can use other people's types in your own functions with interfaces that didn't even exist when they wrote their type. To do that in languages with explicit interfaces, you have to write ugly wrapper classes around the other person's type for zero benefit.