Avatar ·

Qual é a diferença entre `use` e `extern crate` em Rust?

Olá! Comecei a estudar Rust recentemente e fiquei confuso com os imports. Em alguns exemplos vejo `extern crate`, e em outros, `use`. Por exemplo, escrevo um programa simples que usa a crate `rand` para gerar números aleatórios: ```rust // Opção 1 extern crate rand; use rand::Rng; fn main() { let mut rng = rand::thread_rng(); let n: u32 = rng.gen_range(1..101); println!("Número aleatório: {}", n); } ``` Mas também vi código onde `extern crate` não é usado, e já escrevem direto `use`: ```rust // Opção 2 use rand::Rng; fn main() { let mut rng = rand::thread_rng(); let n: u32 = rng.gen_range(1..101); println!("Número aleatório: {}", n); } ``` Ambas as opções funcionam, mas não entendo qual é a diferença. Quando preciso escrever `extern crate`, e quando apenas `use` é suficiente? Será que `extern crate` é uma construção obsoleta? Ou é necessária para algum caso especial? Explique, por favor, com exemplos. Desde já, obrigado!