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