I feel that we could treat most complaints with the built-in prelude by allowing crate-wide imports. You’d declare these in your main.rs/lib.rs only and they’d be equivalent to being in the built-in prelude.
// main.rs
use(crate) std::collections::{HashMap, HashSet};
Forbidding collisions with the built-in prelude will avoid surprising single-file editors. Also forbidding use of privacy stuff before a use(crate) it as it wouldn’t apply.
As an alternative to rfc-890 I suppose it has similar drawbacks, but to me the syntax is lighter as it’s close to pub(crate). Forbidding collision with the std prelude also avoids a bunch of issues.
I read the comments on that rfc and I’m not currently convinced my version would be bad. Please help 