Rust · Avançado · Português · Técnico
tipo never
O tipo ! das expressões que nunca produzem valor, como panic! e funções que não retornam. Converte-se em qualquer tipo, por isso cabe em braços de match que divergem.
Onde usar
Aparece em fn -> !, em return, continue e panic! dentro de match, e em Result<T, Infallible>. É o motivo de um match poder misturar i32 e panic!.
Em código
fn falha() -> ! {
panic!("sem volta");
}
let n: i32 = match "5".parse() {
Ok(v) => v,
Err(_) => falha(), // ! vira i32
};
println!("{n}");Exemplos
Esse braço do match tem o tipo never, por isso compila.
A função devolve ! porque nunca retorna.
Cuidado
Fora do retorno de funções, o ! ainda não é estável como tipo comum; para erros impossíveis use Infallible.
Sinônimos
never type, tipo bottom
Origem
Do inglês never, 'nunca'.