Rust中use和extern crate的区别是什么?何时使用哪个?
大家好!我最近开始学习Rust,对两个关键构造感到困惑:`use`和`extern crate`。文档说它们都与导入有关,但我不明白何时使用哪个。
这是我的代码:
```rust
// 这能工作
extern crate rand;
use rand::Rng;
fn main() {
let secret_number = rand::thread_rng().gen_range(1..101);
println!("秘密数字: {}", secret_number);
}
```
但如果我这样写,没有`extern crate`:
```rust
use rand::Rng;
fn main() {
let secret_number = rand::thread_rng().gen_range(1..101);
println!("秘密数字: {}", secret_number);
}
```
编译器报错:`can't find crate for rand`。那为什么需要`use`,如果没有`extern crate`什么都不能工作?反过来——如果我只写`extern crate rand`,那么没有`use`的话`gen_range`函数就不可用。
我还看到在一些项目中(例如Rust 2018),人们根本不写`extern crate`,而只是使用`use`。为什么?