Earlier quoted context omitted.
Note that it's quite possible for a trait to have infinitely many implementations in any given program. For example, Debug is implemented by u64, Box , Box >, ..., and so on. While these happen to have the same size, it's not hard to imagine a situation where this is not the case.
Your situation is already sufficiently impossible because it shows that for a given trait, the set of implementors is often (countably) infinite.
trait Foo { fn foo(); }
impl Foo for T {
fn foo() {
as Foo>::foo();
}
}
...but the compiler can't compile it: since Rust implements generics solely through monomorphization, that would require generating an infinitely large binary :)