This is something I've ran into a number of times. It may be useful or it may not even be worth considering.
I frequently have situations where I have a submodule for organization, but the submodule only contains one item (be it a trait, struct, etc.). In the parent module, I then have
mod foo; pub(irrelevant) use foo::Foo;. This is fine…ordinarily. But if that parent module happens to be the crate root, then everything in the crate can still rely on the existence of the module.
Obviously I can "just" not use the full path, but that requires a conscious effort to do so. Things like autoimport in rust-analyzer default to the full path, though that's admittedly not a compiler issue. Requiring submodules to use the reëxport rather than an otherwise internal path would, in my opinion, be a net gain, as it reduces the internal coupling of the code.
Thoughts? It's quite niche.