Enum
Afinal para que serve um enum?
Um enum é uma forma de declarar constantes, de forma mais semântica, sua declaração é feita da seguinte maneira enum Nome { valores }
.
#![allow(unused)] fn main() { enum Uf { Sp, Rj, Ce, } }
Os enums em Rust, podem também armazenar valores de forma parecida com uma tupla, mas o modo de recuperar o valor sera mais explicado com mais detalhes na próxima parte.
#![allow(unused)] fn main() { enum Uf { Sp(String), Rj(String), Ce(String), } }
Por enquanto vamos fazer a seguinte alteração neste enum
para conseguirmos escrever no console o valor do Enum
#![allow(unused)] fn main() { #[derive(Debug)] enum Uf { Sp(String), Rj(String), Ce(String), } }
Esta alteração que fizemos também pode ser aplicada as structs, para tirarmos proveito desta modificação iremos usar o macro println!
da seguinte maneira.
#[derive(Debug)] enum Uf { Sp(String), Rj(String), Ce(String), } //--declaração do enum fn main() { let uf = Uf::Sp(String::from("São Paulo")); println!("{:?}", uf); println!("{:#?}", uf); }
Este modo de uso ira escrever no console o modo em que a estrutura foi declarada, tanto para os enums quanto para as structs.
Métodos em enums.
Também conseguimos implementar métodos para nossos enums, do mesmo modo que fazemos com as structs
.
#[derive(Debug)] enum Uf { Sp(String), Rj(String), Ce(String), } //--Declaração do enum impl Uf { fn retorna_sp() -> Self { Self::Sp(String::from("São Paulo")) } fn quem_sou_eu(&self) { todo!() } } fn main() { let uf = Uf::retorna_sp(); println!("{:?}", uf); println!("{:#?}", uf); }
Na implementação acima temos o método retorna_sp
que ira retornar um enum já com o valor preenchido, e temos também o método quem_sou_eu
que iremos implementar na próxima parte deste 4Noobs.