| ▲ | lmm 10 hours ago | |
> You depend on crates A and B. A impls Foo for Bar. You pass an instance of Bar to a function that accepts `impl Foo`. You are happy. Later crate B adds an impl of Foo for Bar. Clearly _at least_ one of these must be an orphan impl, but both could be. Suddenly it's ambiguous which implementation of Foo you're talking about, so you break because B added an impl. I think that's fine. Same as what happens if B adds a new function with the same name as a function in A that you were using unqualified. > What happens, for example, if an impl that was an orphan impl in one version of A becomes a coherent impl in a later version of A? Nothing much? | ||