@@ -6,27 +6,42 @@ Erroneous code example:
6
6
use something::Foo; // error: unresolved import `something::Foo`.
7
7
```
8
8
9
- Paths in ` use ` statements are relative to the crate root. To import items
10
- relative to the current and parent modules, use the ` self:: ` and ` super:: `
11
- prefixes, respectively. Also verify that you didn't misspell the import
12
- name and that the import exists in the module from where you tried to
13
- import it. Example:
9
+ In Rust 2015, paths in ` use ` statements are relative to the crate root. To
10
+ import items relative to the current and parent modules, use the ` self:: ` and
11
+ ` super:: ` prefixes, respectively.
12
+
13
+ In Rust 2018, paths in ` use ` statements are relative to the current module
14
+ unless they begin with the name of a crate or a literal ` crate:: ` , in which
15
+ case they start from the crate root. As in Rust 2015 code, the ` self:: ` and
16
+ ` super:: ` prefixes refer to the current and parent modules respectively.
17
+
18
+ Also verify that you didn't misspell the import name and that the import exists
19
+ in the module from where you tried to import it. Example:
14
20
15
21
```
16
- use self::something::Foo; // ok!
22
+ use self::something::Foo; // Ok.
17
23
18
24
mod something {
19
25
pub struct Foo;
20
26
}
21
27
# fn main() {}
22
28
```
23
29
24
- Or, if you tried to use a module from an external crate, you may have missed
25
- the ` extern crate ` declaration (which is usually placed in the crate root):
30
+ If you tried to use a module from an external crate and are using Rust 2015,
31
+ you may have missed the ` extern crate ` declaration (which is usually placed in
32
+ the crate root):
26
33
27
- ```
28
- extern crate core; // Required to use the `core` crate
34
+ ``` edition2015
35
+ extern crate core; // Required to use the `core` crate in Rust 2015.
29
36
30
37
use core::any;
31
38
# fn main() {}
32
39
```
40
+
41
+ In Rust 2018 the ` extern crate ` declaration is not required and you can instead
42
+ just ` use ` it:
43
+
44
+ ``` edition2018
45
+ use core::any; // No extern crate required in Rust 2018.
46
+ # fn main() {}
47
+ ```
0 commit comments