Qual é a diferença entre use e extern crate no Rust? Quando usar cada um?
Olá, colegas! Comecei a estudar Rust recentemente e fiquei confuso com duas construções-chave: `use` e `extern crate`. Na documentação diz que ambas estão relacionadas à importação, mas não entendo quando usar cada uma.
Aqui está meu código:
```rust
// Isso funciona
extern crate rand;
use rand::Rng;
fn main() {
let secret_number = rand::thread_rng().gen_range(1..101);
println!("Número secreto: {}", secret_number);
}
```
Mas se eu escrevo assim, sem `extern crate`:
```rust
use rand::Rng;
fn main() {
let secret_number = rand::thread_rng().gen_range(1..101);
println!("Número secreto: {}", secret_number);
}
```
O compilador reclama: `can't find crate for rand`. Para que serve `use` então, se sem `extern crate` nada funciona? E ao contrário — se eu escrever apenas `extern crate rand`, a função `gen_range` não estará disponível sem `use`.
Também vi que em alguns projetos (por exemplo, no Rust 2018) as pessoas nem escrevem `extern crate`, apenas usam `use`. Por quê?