This is tracked as a bug at https://github.com/rust-lang/rust/issues/85883.
The pattern is sometimes used to implement sealed traits, where a public trait depends on a private trait (meaning only the original crate can implement the trait).