Rost -Generika

Rost -Generika
Hallo Rustaceane. In diesem Fall werden wir untersuchen, was Generika sind und wie generische Typen in der Rostsprache verwendet werden können. Generics Trips Die meisten neuen Rostanfänger, aber wir werden unsere besten Anstrengungen unternehmen, um es so klar wie möglich zu machen.

Wenn Sie daran interessiert sind, weitere Rost -Themen zu erkunden, lesen Sie unsere Rostliste, um mehr zu erfahren.

Der Parameter

Wenn Sie generische Typen deklarieren, finden Sie den Parameter. Es wird verwendet, um jeden Datentyp in Rost darzustellen:

Ein Beispiel für den Typparameter in einer Funktion ist ein gezeigt:

fn my_function()

Das obige definiert eine generische Funktion, die ein Argument t von irgendeiner Art nimmt.

Sie können mehrere generische Parameter definieren, indem Sie sie mit Kommas trennen:

fn my_function()

In der obigen Syntax definieren wir mehrere generische Parameter, T, u, v. Obwohl nicht erforderlich, ist es üblich, generische Typen aus T zu finden und das Alphabet zu erhöhen.

Rost definieren generische Struktur

Wir können eine generische Struktur definieren, wie in der folgenden Syntax gezeigt:

Strukturstrukturname
// strukturinfo

Nehmen Sie das unten definierte Beispiel: Struktur: unten definiert:

Struktur Mystruct
Es,
J: u,

fn main ()
sei var1 = mystruct
I: 10,
J: "Hallo"
;
println!("X: ", var1.ich);
println!("Y: ", var1.J);

Das obige erstellt eine generische Struktur mit zwei Parametern. Innerhalb der Struktur geben wir zwei Strukturelemente von Typ t und u an. Da T und U generische Typen sind, können sie von jeder Art sein.

Generische Funktionen

Das gleiche Konstrukt kann auf Funktionen und Methoden angewendet werden. Wenn eine Funktion den Typ nimmt, soll sie eine generische Funktion sein.

Die generische Funktionsdefinition ist wie gezeigt:

fn func_name()
// Funktionslogik

Nehmen Sie nachfolgend das Beispiel der generischen Funktionsdefinition:

fn generic(var: t)
println!("", var);

fn main ()
generisches ("Hallo")

In diesem Beispiel haben wir eine generische Funktion, die einen beliebigen Typ nimmt und in die Konsole druckt. Das Ausführen des oben genannten Codes verursacht jedoch einen Fehler.

Da wir einen generischen Parameter verwenden, müssen wir das Display- oder Debugg -Merkmal implementieren, um es auszudrucken. Wir können den Code als:

Verwenden Sie std :: fmt :: debug;
fn generic(var: t)
println!(":? ", var);

fn main ()
generisches ("Hallo")

In diesem Fall importieren wir das Debug -Merkmal und verwenden sie für den generischen Typ. Wir können dann den Wert mit dem Debug -Merkmal Platzhalter ausdrucken: :?

Der gleiche Fall gilt, wenn eine Funktion irgendeine Art von Betrieb ausführen muss. Nehmen Sie die Beispielfunktion unten, die 0 zurückgibt, wenn ein Wert gleichmäßig ist und 1, wenn anders.

fn Savor_odd (var: t) -> i32
Wenn var % 2 == 0
Rückkehr 0;
anders
Rückkehr 1;

Wenn wir die Funktion oben aufrufen, gibt sie einen Fehler zurück. Wir müssen das REM -Merkmal implementieren, damit sie wie:

Verwenden Sie std :: ops :: rem;
Verwenden Sie STD :: CMP :: EQ;
fn Savor_odd + EQ> (var: t) -> i32

Mit den REM- und EQ -Merkmalen können Sie den Restbetreiber verwenden und einen logischen Vergleich durchführen.

Abschluss

In diesem Artikel haben wir die Grundlagen der Arbeit mit generischen Typen in der Rostsprache untersucht. Überprüfen Sie die Dokumente, um mehr zu erfahren.