Avatar ·

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`。为什么?