Rost Smart Zeiger

Rost Smart Zeiger
Zeiger sind für einen Programmierer keine neue Sache. Sie sind eine Funktion, mit der Sie Variablen verwenden können, um eine Adresse im Speicher zu speichern. Die Adresse zeigt dann auf "Zeiger" auf Daten, die an diesem Ort gespeichert sind.

Intelligente Zeiger sind Zeiger mit erweiterten Funktionen wie gebundenen Überprüfungen und automatischer Speicherverwaltung. Intelligente Zeiger enthalten auch zusätzliche Metadaten. Jetzt ist das Konzept der Smart -Zeiger nicht neu, insbesondere für C ++ - Programmierer.

Für diesen Artikel werden wir verschiedene intelligente Hinweise untersuchen, wie in der Rust Standard Library definiert.

Schlüsselpunkte

In Rost sind intelligente Zeiger Datenstrukturen, aber im Gegensatz zu normalen Zeigern können intelligente Zeiger tatsächlich Daten besitzen. Sie werden üblicherweise unter Verwendung von Strukturen implementiert, unterscheiden sich jedoch von normalen Strukturen in dem Sinne, dass sie Deref- und Drop -Merkmale implementieren.

Es gibt 5 intelligente Zeiger in Rost:

  1. Kasten
  2. Deref
  3. Tropfen
  4. RC
  5. Refcell

NOTIZ: In Rost bezieht sich auf den Datentyp.

Denken Sie daran, dass in diesem Artikel nicht alle intelligenten Zeiger abdecken werden.

Kasten

Der Box Smart Zeiger bietet eine Möglichkeit, Daten zu verweisen, die im Heap -Speicher gespeichert sind. Standardmäßig verteilt Rost alles im Stapelspeicher. Mit dem Box Smart Zeiger können wir auf den Heap zugreifen, wobei wir keine Leistungsaufwand entstehen.

Der Box Smart Zeiger folgt auch den Regeln für Eigentum und Kreditaufnahme. Daher hat es einen einzelnen Besitzer von Daten und kann nur eine veränderliche Referenz und eine beliebige Anzahl unveränderlicher Referenzen haben.

fn main ()
// Kasten
lass var = box :: new (100);
println!("Wert: ", var)

Im obigen Beispiel haben wir einen Box Smart Zeiger, der den Wert 5 auf dem Haufen speichert. Denken Sie daran, dass die Box selbst im Stapel gespeichert ist.

Sobald das Programm beendet ist, wird die Box aus dem Speicher ausgelöst.

Deref

Wie der Name schon sagt, wird der Deref -Smart -Zeiger verwendet, um die Manipulation des Derferenzvorgangs zu ermöglichen. Mit dem Deref Smart Zeiger können Sie eine Struktur erstellen, die sowohl mit intelligentem Zeiger als auch mit Referenzen funktionieren kann.

Ein Beispielcode ist wie unten gezeigt:

Verwenden Sie std :: ops :: Deref;
Struktur -Custbox
Daten: t,

impl Deref für Custbox
// Generischer Typ Param
Typ target = t;
fn Deref (& self) -> & t
&selbst.Daten


fn main ()
Sei x = Custbox Daten: 100;
println!("Wert: ",*(x.Deref ()))

Tropfen

Der Drop -Smart -Zeiger wird verwendet, um den Speicher zu kosten, der im Haufen zugewiesen wird. Das Drop -Merkmal in Rost behandelt das Speicher, wenn eine Variable aus dem Spielraum ausgeht. Wir müssen dieses Merkmal nicht manuell anrufen, da Rost dies für uns tun wird. Wir können es jedoch für benutzerdefinierte Typen wie gezeigt implementieren.

Struktur Mystruct
X: i32,

Impl Drop für MyStruct
fn Drop (& mut self)
println!("Fallen: ", Selbst.X)


fn main ()
sei _x = mystruct x: 100;
sei _y = mystruct x: 200;

Die obigen implementiert das Drop -Merkmal für benutzerdefiniertes Merkmal. Der Ausgang ist wie gezeigt:

Fallen: 200

Fallen: 100

Abschluss

In diesem Artikel behandeln wir, wie gemeinsame intelligente Zeiger in der Rust -Programmiersprache erstellt und mit ihnen arbeiten können und arbeiten können und arbeiten. In der unten stehenden Ressource erfahren Sie mehr über Rust Smart Pointers:

https: // doc.Rost-Lang.org/book/ch15-00-smart-Pointers.html