Skip to content

Commit

Permalink
Merge pull request #285 from mattheww/2023-09_paths
Browse files Browse the repository at this point in the history
Update Rust 2018 "Path and module system changes" for Rust 1.72
  • Loading branch information
ehuss authored Sep 6, 2023
2 parents 2751bdc + e5f1c02 commit 34fca48
Showing 1 changed file with 6 additions and 7 deletions.
13 changes: 6 additions & 7 deletions src/rust-2018/path-changes.md
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,11 @@ mod submodule {
}
```

If you have a local module or item with the same name as an external crate, a
path begining with that name will be taken to refer to the local module or
item. To explicitly refer to the external crate, use the `::name` form.


### No more `mod.rs`

In Rust 2015, if you have a submodule:
Expand Down Expand Up @@ -272,7 +277,7 @@ enough to have submodules.
In Rust 2018, paths in `use` declarations and in other code work the same way,
both in the top-level module and in any submodule. You can use a relative path
from the current scope, a path starting from an external crate name, or a path
starting with `crate`, `super`, or `self`.
starting with `::`, `crate`, `super`, or `self`.

Code that looked like this:

Expand Down Expand Up @@ -371,9 +376,3 @@ mod submodule {

This makes it easy to move code around in a project, and avoids introducing
additional complexity to multi-module projects.

If a path is ambiguous, such as if you have an external crate and a local
module or item with the same name, you'll get an error, and you'll need to
either rename one of the conflicting names or explicitly disambiguate the path.
To explicitly disambiguate a path, use `::name` for an external crate name, or
`self::name` for a local module or item.

0 comments on commit 34fca48

Please sign in to comment.