O que o operador de interrogação (?) faz em Rust e como ele funciona com erros?
Olá a todos! Sou novo em Rust e estou tentando entender o tratamento de erros. Frequentemente vejo em código alheio um operador de interrogação estranho — `?`. Por exemplo, este código:
```rust
use std::fs::File;
use std::io::Read;
fn read_file(path: &str) -> Result {
let mut file = File::open(path)?;
let mut content = String::new();
file.read_to_string(&mut content)?;
Ok(content)
}
```
Eu entendo que `File::open` retorna um `Result`, mas o que esse `?` faz no final da linha? Sem ele, o compilador reclama que não estou tratando o `Result`. Mas se eu adicionar `?`, o código funciona.
Tentei ler a documentação, mas está complicada. Vocês podem explicar em palavras simples: o que é esse sinal de interrogação mágico? Ele está relacionado com `unwrap()` ou `match`? Por que a função retorna `Result`, mas no corpo eu posso usar `?` e não escrever match para cada chamada?
Exemplo que me confunde: se eu substituir `?` por `.unwrap()`, o código também funciona, mas em caso de erro o programa quebra.
No answers yet.
Faça login para deixar uma resposta
Blogs
Implantação zero-downtime de serviços Rust: recarregamento sem interrupções
Implantação de aplicação JavaScript em VPS: guia avançado passo a passo
Tarefas PHP no LeetCode: como resolver e o que estudar
Ferramentas C# 2024: IDE, linters e formatadores para profissionais