Enumes de ferrugem

Enumes de ferrugem
Neste artigo, aprenderemos sobre enumerações ou enums para curta. Enums nos permitem definir um tipo personalizado que consiste em variantes. Eles são intimamente semelhantes a uma estrutura e cada estrutura válida é uma enumeração válida.

Rust declare enum

Podemos definir uma enumeração em ferrugem usando a palavra -chave Enum, seguida pelo nome da enumeração. Em seguida, criamos o corpo da enumeração dentro de um par de aparelhos encaracolados.

O corpo enum é composto de possíveis variantes separadas por vírgulas.

A sintaxe é como mostrado:

enumenum_name
variante(),
variante2
variante3
..

A ferrugem recomenda usar o uppercamelcasing para nomear variantes de enum.

Vamos tomar um caso em que as enumes podem ser úteis. Um exemplo que vem à mente são tipos de carga. Existem dois tipos de carga:

  1. Negativo
  2. Positivo

Como só pode haver um tipo de carga em um determinado momento, faz sentido usar um enum. Um exemplo é como mostrado abaixo:

enumcharge
Negativo,
Positivo

RUST Inicialize enum

Depois de definirmos uma enumeração, podemos criar instâncias de cada uma das variantes. Um exemplo é como mostrado:

fnmain ()
Seja p = Charge :: positivo;
Seja n = carregar :: negativo;

Usando enums com estruturas

Uma maneira de expandir uma enumeração é combiná -la com uma estrutura. Considere o código de exemplo abaixo:

Estrutura
Nome: String,
Valor: i32,
cobrança: cobrança,

Depois de termos uma estrutura, podemos criar uma instância da estrutura e passar as propriedades da enumeração, como mostrado no exemplo abaixo:

carga enum
Negativo,
Positivo

elemento da estrutura
Nome: String,
Valor: i32,
cobrança: cobrança,

fn main ()
Seja elem1 = elemento
Nome: "sódio".para sequenciar(),
Valor: 1,
cobrança: cobrança :: positivo
;
Seja elem2 = elemento
Nome: "Cloreto".para sequenciar(),
Valor: 1,
cobrança: cobrança :: negativo
;

No código de exemplo acima, definimos duas instâncias da estrutura do elemento. Em seguida, passamos a propriedade de carga como um valor da enumeração de carga.

Traços derivados de ferrugem

Se você tentar imprimir as instâncias da estrutura acima, o compilador retornará um erro. Para imprimir a estrutura, precisamos "importar" o traço de depuração.

Isso é feito usando o atributo derivado. Isso nos permite obter várias implementações de características, como:

  1. Traço de depuração
  2. Eq, Partialeq, Ord, Partialord
  3. Traço de hash,
  4. Característica padrão
  5. Etc.

A sintaxe para derivar uma característica é como mostrado:

#[deriva (trait_name)]

Como precisamos imprimir a estrutura no console, podemos derivar o traço de depuração como mostrado:

#[Derive (Debug)]
enumcharge
Negativo,
Positivo

#[Derive (Debug)]
Estrutura
Nome: String,
Valor: i32,
cobrança: cobrança,

Podemos então usar esta característica para imprimir a estrutura no console como:

println!(":#? ", elem1);

Isso deve imprimir a estrutura do console como:

Você pode verificar a documentação derivada no recurso fornecido abaixo:

https: // doc.Ferrute.org/referência/atributos/derivar.html

Conclusão

Neste artigo, exploramos como criar, usar e trabalhar com tipos de enum em ferrugem. Também abordamos como usar enums com estruturas e como derivar características.

Obrigado pela leitura!!