Genéricos da ferrugem

Genéricos da ferrugem
Olá Rustaceans. Para este, exploraremos o que são genéricos e como usar tipos genéricos na linguagem ferrugem. Viagens de genéricos mais novos iniciantes de ferrugem, mas faremos o nosso melhor esforço para deixá -lo o mais claro possível.

Se você estiver interessado em explorar mais tópicos de ferrugem, verifique nossa lista de ferrugem para saber mais.

O parâmetro

Ao declarar tipos genéricos, você encontrará o parâmetro. É usado para representar qualquer tipo de dados em ferrugem:

Um exemplo do parâmetro de tipo em uma função é um mostrado:

fn my_function()

O acima define uma função genérica que leva um argumento de qualquer tipo.

Você pode definir vários parâmetros genéricos, separando -os com vírgulas:

fn my_function()

Na sintaxe acima, definimos vários parâmetros genéricos, t, u, v. Embora não seja necessário, é comum encontrar tipos genéricos a partir de t e incrementando o alfabeto.

Ferrugem definir estrutura genérica

Podemos definir uma estrutura genérica, como mostrado na sintaxe abaixo:

StructName
// Informações da estrutura

Veja o exemplo, estrutura definida abaixo:

estrutura mystruct
isto,
J: U,

fn main ()
Seja var1 = myStruct
I: 10,
J: "Oi"
;
println!("X: ", var1.eu);
println!("Y: ", var1.j);

O acima cria uma estrutura genérica com dois parâmetros. Dentro da estrutura, especificamos dois membros da estrutura do tipo T e U. Como T e U são tipos genéricos, eles podem ser de qualquer tipo.

Funções genéricas

A mesma construção pode ser aplicada a funções e métodos. Se uma função for necessário, é considerado uma função genérica.

A definição de função genérica é como mostrado:

fn func_name()
// lógica da função

Veja o exemplo da definição de função genérica abaixo:

fn genérico(var: t)
println!("", var);

fn main ()
genérico ("oi")

Neste exemplo, temos uma função genérica que leva qualquer tipo e a imprime para o console. No entanto, a execução do código acima causará um erro.

Como estamos usando um parâmetro genérico, precisamos implementar o traço de exibição ou depuração para imprimi -lo. Podemos refinar o código como:

Use std :: fmt :: Debug;
fn genérico(var: t)
println!(":? ", var);

fn main ()
genérico ("oi")

Nesse caso, importamos o traço de depuração e o usamos para o tipo genérico. Podemos então imprimir o valor usando o espaço reservado para características de depuração: :?

O mesmo caso se aplica se uma função precisar executar qualquer tipo de operação. Pegue a função de exemplo abaixo que retorna 0 se um valor for par e 1 se outra.

FN Even_odd (var: t) -> i32
Se var % 2 == 0
retornar 0;
outro
retornar 1;

Se chamarmos a função acima, ele retornará um erro. Precisamos implementar a característica REM para que funcione como:

Use std :: ops :: rem;
Use std :: cmp :: eq;
FN Even_odd + Eq> (var: t) -> i32

As características REM e EQ permitem que você use o operador restante e execute a comparação lógica.

Conclusão

Neste artigo, exploramos os fundamentos de trabalhar com tipos genéricos na linguagem ferrugem. Verifique os documentos para saber mais.