FWIW, I was relating to GHC's implementation here, and I originally thought "here be dragons", that this whole "would only be in scope when ..." business was the least well thought out and well-specified part of the proposal. But since then, I've realized that Rust could do it much more simply and straightforwardly with something like the late RFC PR #10. And unlike GHC, we *could* actually implement it as just a bunch of (incoherent) wired-in impls. The mechanism would simply be that, like all other built-in traits, `HasPrefix` and `Coercible` would be automatically derived by the compiler for plain (public-definition) `struct`s and `enum`s, and would need to be declared/derived by the programmer for `abstract struct`s and `abstract enum`s. All of the complexity in GHC's implementation is just to work around them having the wrong defaults.