const() in Rust

Nilesh Katuwal 7 Juni 2022
const() in Rust

In diesem Artikel erfahren wir, was const() in Rust ist.

const() in Rust

Wenn ein bestimmter Wert mehrmals in einem Programm verwendet wird, kann es umständlich sein, ihn wiederholt zu kopieren. Außerdem ist es nicht immer möglich oder wünschenswert, daraus eine Variable zu machen, die von Funktion zu Funktion weitergegeben wird.

Das Schlüsselwort const ist in diesen Fällen eine sinnvolle Alternative zum Duplizieren von Code.

Rust hat zwei Arten von Konstanten, die in jedem Gültigkeitsbereich deklariert werden können, einschließlich global. Beide erfordern eine explizite Annotation des Typs:

  1. const - ein unveränderlicher Wert (der typische Fall)

  2. static - eine veränderliche Variable mit statischer Lebensdauer

    Die statische Lebensdauer wird abgeleitet und muss daher nicht angegeben werden. Der Zugriff auf oder die Änderung einer veränderlichen statischen Variablen ist unsicher.

Beispiel:

fn main() {
   const THE_LIMIT:i32 = 120;
   const NUM:f32 = 3.14;

   println!("The limit of user is {}", THE_LIMIT);
   println!("The value of num is {}",NUM);
}

Ausgabe:

The limit of user is 120
The value of num is 3.14

Konstanten sollten explizit typisiert werden; Anders als bei let können Sie den Compiler nicht den Typ bestimmen lassen. Jeder konstante Wert könnte in einer Konstante definiert werden, was die überwiegende Mehrheit der Dinge ist, die sinnvollerweise in eine Konstante aufgenommen werden; const kann beispielsweise nicht auf eine Datei angewendet werden.

Die verblüffende Ähnlichkeit zwischen const- und static-Elementen schafft Unsicherheit darüber, wann jedes verwendet werden sollte. Konstanten sind geneigt, wann immer sie verwendet werden, was ihre Verwendung gleichbedeutend mit dem einfachen Ersetzen des Namens const durch seinen Wert macht.

Im Gegensatz dazu zeigen statische Variablen auf eine einzige Speicheradresse, die von allen Zugriffen gemeinsam genutzt wird. Dies impliziert, dass sie im Gegensatz zu Konstanten keine Destruktoren haben und in der gesamten Codebasis als ein einziger Wert operieren können.

Das Schlüsselwort const wird auch ohne Rohzeiger verwendet, wie es bei const T und mut T. zu sehen ist.

Beispiel:

static LANGUAGE: &str = "Rust";
const LIMIT: i32 = 10;

fn is_big(n: i32) -> bool {
    n > LIMIT
}

fn main() {
    let n = 16;
    println!("{} is a programming language.", LANGUAGE);
    println!("The limit is {}", LIMIT);
    println!("{} is {}", n, if is_big(n) { "large" } else { "small" });

}

Ausgabe:

Rust is a programming language.
The limit is 10
16 is large