Genéricos de óxido

Genéricos de óxido
Hola Rustaceans. Para este, exploraremos cuáles son los genéricos y cómo usar tipos genéricos en el lenguaje de óxido. Viajes de genéricos La mayoría de los nuevos principiantes de óxido, pero haremos nuestro mejor esfuerzo para dejarlo lo más claro posible.

Si está interesado en explorar más temas de óxido, consulte nuestra lista de óxido para obtener más información.

El parámetro

Al declarar tipos genéricos, encontrará el parámetro. Se usa para representar cualquier tipo de datos en óxido:

Un ejemplo del parámetro de tipo en una función es un mostrado:

fn my_function()

Lo anterior define una función genérica que toma un argumento t de cualquier tipo.

Puede definir múltiples parámetros genéricos separándolos con comas:

fn my_function()

En la sintaxis anterior, definimos múltiples parámetros genéricos, T, U, V. Aunque no es necesario, es común encontrar tipos genéricos que comienzan desde T e incrementando el alfabeto.

Óxido define la estructura genérica

Podemos definir una estructura genérica como se muestra en la sintaxis a continuación:

struct structName
// Información de estructura

Tome el ejemplo, estructura definida a continuación:

estructurar mystruct
él,
J: u,

fn main ()
Deje var1 = mystruct
I 10,
J: "Hola"
;
println!("X: ", var1.i);
println!("Y: ", var1.j);

Lo anterior crea una estructura genérica con dos parámetros. Dentro de la estructura, especificamos dos miembros de la estructura de Tipo T y U. Dado que t y u son tipos genéricos, pueden ser de cualquier tipo.

Funciones genéricas

La misma construcción se puede aplicar a las funciones y el método. Si una función toma tipo, se dice que es una función genérica.

La definición de función genérica es como se muestra:

fn func_name()
// Lógica de funciones

Tome el ejemplo de la definición de función genérica a continuación:

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

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

En este ejemplo, tenemos una función genérica que toma cualquier tipo e imprime en la consola. Sin embargo, ejecutar el código anterior causará un error.

Dado que estamos utilizando un parámetro genérico, necesitamos implementar el rasgo de pantalla o depuración para imprimirlo. Podemos refinar el código como:

usar std :: fmt :: debug;
FN genérico(var: t)
println!(":? ", var);

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

En este caso, importamos el rasgo de depuración y lo usamos para el tipo genérico. Luego podemos imprimir el valor usando el marcador de posición del rasgo de depuración: :?

El mismo caso se aplica si una función necesita realizar cualquier tipo de operación. Tome la función de ejemplo a continuación que devuelve 0 si un valor es uniforme y 1 si es lo contrario.

fn incluso_odd (var: t) -> i32
Si var % 2 == 0
regresar 0;
demás
regresar 1;

Si llamamos a la función anterior, devolverá un error. Necesitamos implementar el rasgo REM para que funcione como:

usar std :: ops :: rem;
usar std :: cmp :: eq;
fn incluso_odd + Eq> (var: t) -> i32

Los rasgos REM y EQ le permiten usar el operador restante y realizar una comparación lógica.

Conclusión

En este artículo, exploramos los fundamentos de trabajar con tipos genéricos en el lenguaje de óxido. Consulte los documentos para obtener más información.