ExpertiDict

Rust · Avançado · Português · Técnico

tipo never

/ˈt͡ʃi.pu ˈnɛ.veʁ/substantivo

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'.

Veja também

Todos os termos de Rust