about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2020-07-07 09:22:57 +0000
committerbors <bors@rust-lang.org>2020-07-07 09:22:57 +0000
commit51eeabf505804fb3f2621626f5c39973640c514c (patch)
tree604945161b80422c6c669954b73c6bf2a2f2b4f0
parent70f9d23b916f2db7da711aa4a0317a218997ba42 (diff)
parent59701360dc0c76bfa45204d307ac5055f8bff538 (diff)
downloadrust-51eeabf505804fb3f2621626f5c39973640c514c.tar.gz
rust-51eeabf505804fb3f2621626f5c39973640c514c.zip
Auto merge of #73562 - poliorcetics:e0432-to-edition2018, r=GuillaumeGomez
Update E0432 long description with the separate behaviors of editions 2015 and 2018

Fixes #64668.

I restarted from the work done in #71413.
-rw-r--r--src/librustc_error_codes/error_codes/E0432.md35
1 files changed, 25 insertions, 10 deletions
diff --git a/src/librustc_error_codes/error_codes/E0432.md b/src/librustc_error_codes/error_codes/E0432.md
index b562a85b785..a6e2acac5d2 100644
--- a/src/librustc_error_codes/error_codes/E0432.md
+++ b/src/librustc_error_codes/error_codes/E0432.md
@@ -6,14 +6,20 @@ Erroneous code example:
 use something::Foo; // error: unresolved import `something::Foo`.
 ```
 
-Paths in `use` statements are relative to the crate root. To import items
-relative to the current and parent modules, use the `self::` and `super::`
-prefixes, respectively. Also verify that you didn't misspell the import
-name and that the import exists in the module from where you tried to
-import it. Example:
+In Rust 2015, paths in `use` statements are relative to the crate root. To
+import items relative to the current and parent modules, use the `self::` and
+`super::` prefixes, respectively.
+
+In Rust 2018, paths in `use` statements are relative to the current module
+unless they begin with the name of a crate or a literal `crate::`, in which
+case they start from the crate root. As in Rust 2015 code, the `self::` and
+`super::` prefixes refer to the current and parent modules respectively.
+
+Also verify that you didn't misspell the import name and that the import exists
+in the module from where you tried to import it. Example:
 
 ```
-use self::something::Foo; // ok!
+use self::something::Foo; // Ok.
 
 mod something {
     pub struct Foo;
@@ -21,12 +27,21 @@ mod something {
 # fn main() {}
 ```
 
-Or, if you tried to use a module from an external crate, you may have missed
-the `extern crate` declaration (which is usually placed in the crate root):
+If you tried to use a module from an external crate and are using Rust 2015,
+you may have missed the `extern crate` declaration (which is usually placed in
+the crate root):
 
-```
-extern crate core; // Required to use the `core` crate
+```edition2015
+extern crate core; // Required to use the `core` crate in Rust 2015.
 
 use core::any;
 # fn main() {}
 ```
+
+In Rust 2018 the `extern crate` declaration is not required and you can instead
+just `use` it:
+
+```edition2018
+use core::any; // No extern crate required in Rust 2018.
+# fn main() {}
+```