Hmm. So, I’m not 100% clear that I understand the difference between the proposals. Based on the explanation in The Edition Guide it seems to me that the only difference between the proposals is that
self:: would be required in
use statements in the anchored version, and would not be required in the uniform variant. Is that correct?
Maybe to flesh out what I mean, my intuitive expectation is that paths in Rust follow a similar pattern as filepaths in filesystems. If I’m currently in a directory, I can directly reference names in it. Similarly, I can use relative paths to access content inside sub-directories or parent directories. And finally, I can use “/” or “C:\” (depending on OS) to access root and specify an absolute path.
Because of that, my feeling is that
super:: should be required, but that
self:: is mostly superfluous (only needed for disambiguation in certain cases, much like using
. at the start of a filepath).
Oh, and to further clarify, I do expect paths to behave identically for both
use statements and general item referencing. I guess it’s more a matter of what that behavior is. I see
use as just a way to bring items into local namespace for convenience, and I expect the paths that specify what to bring in to be the same as when referencing items directly.
More reading suggests that my understanding above is correct. I would like to move to uniform paths eventually, but am also happy with the conservative “achored now, but future-proofing to allow uniform in the future” approach.
To elaborate my preference for uniform paths: any ambiguity in
use statements from not using
self:: will also arise when referencing items directly, and I feel that handling that problem should also be uniform.