Perhaps, given the particular paths that people tend to write without use
ing them, a better solution would be to tweak the prelude as part of the new epoch? Either adding std
(potentially increasing confusion around the root module) or Debug
/cmp
/etc. (I feel like I do this with std
occasionally as well.) Debug
in particular is probably extra-confusing because of its unqualified use in #[derive]
.
Or maybe that’s just opening up too deep a rabbit hole around exactly which things should be added.
Another option might be to tweak the error message- instead of just "Use of undeclared type or module std
" we could add a fallback to check for dependencies and top-level items and suggest one of those? Still a papercut if people keep hitting it, but a) quicker to fix and maybe easier to stop running into that way, especially with some RLS quick-fix support to auto-add use
s, and b) IMO less of a papercut than virtually every use
breaking overnight- those feel more common than full-paths-in-expressions to me.