By the way, there’s a very simple approximation to the "use ident::suffix
takes ident
either from the current module or from the extern crate list" idea.
It’s desugaring into two “fused” imports
use ident::suffix;
=>
use extern::ident::suffix;
use self::ident::suffix;
using some tweaked error reporting (“if one import fails, but another succeeds, then it’s ok”, like with imports from several namespaces).
It was prototyped and tested before for a slightly different idea:
use ident::suffix;
=>
use crate::ident::suffix;
use self::ident::suffix;
and caused some minor but unacceptable-in-the-same-edition breakage, but we can easily adopt it as a cross-edition change.