Avatar ·

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ê?