Avatar ·

O que é unwrap() em Rust e para que é usado? Explique com exemplos

Olá a todos! Comecei a estudar Rust depois de Python e me deparei com uma construção estranha — o método unwrap(). Em diferentes exemplos de código, vejo algo como: ```rust let x = some_result.unwrap(); ``` Entendo que isso está relacionado ao tratamento de erros, mas não compreendo completamente o mecanismo. Em Python, estamos acostumados com try/except, mas aqui a lógica é diferente. Fico especialmente confuso quando vejo unwrap() após chamadas de funções que retornam Result ou Option. Por exemplo, ao ler um arquivo ou fazer parsing de um número a partir de uma string: ```rust let number: i32 = "42".parse().unwrap(); let content = std::fs::read_to_string("file.txt").unwrap(); ``` O que acontece se o arquivo não existir ou a string não for um número? Ouvi dizer que unwrap pode causar um panic — isso é como uma exceção? Ou é algo diferente? Quando devo usar unwrap e quando é melhor usar outros métodos? Existem alternativas que não levam ao encerramento abrupto do programa? Por favor, explique com exemplos simples.