ExpertiDict

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

Any

/ˈɛni/substantivo

Trait da biblioteca padrão que dá identidade de tipo em execução. Com dyn Any é possível guardar valores de tipos variados e recuperá-los com downcast_ref.

Onde usar

Aparece em sistemas de plugins, mapas heterogêneos e eventos. Só funciona com tipos 'static.

Em código

use std::any::Any;
let v: Vec<Box<dyn Any>> =
  vec![Box::new(1_i32), Box::new("oi")];
for x in &v {
  if let Some(n) = x.downcast_ref::<i32>() {
    println!("inteiro {n}");
  }
}

Exemplos

Store it as Box<dyn Any> and downcast later.

Guarde como Box<dyn Any> e faça o downcast depois.

downcast_ref returns None for the wrong type.

O downcast_ref devolve None para o tipo errado.

Cuidado

Não é reflexão: Any só diz se o valor é de um tipo que você já conhece, sem listar campos ou métodos.

Sinônimos

std::any::Any

Veja também

Todos os termos de Rust