Rust-Datentypen

Die grundlegenden Datentypen in der Sprache Rust sind wie folgt.

Integer

Ganzzahltypen werden als Ganzzahlen bezeichnet. Nach Bitlänge und ob sie vorzeichenbehaftet sind, werden sie in die folgenden Kategorien unterteilt:

Bitlänge Vorzeichenbehaftet Vorzeichenlos
8-Bit i8 u8
16-Bit i16 u16
32-Bit i32 u32
64-Bit i64 u64
128-Bit i128 u128
arch isize usize

Die Ganzzahltypen isize und usize werden zur Messung von Datengrößen verwendet. Ihre Bitlänge hängt von der Zielplattform ab, auf der sie ausgeführt werden. Handelt es sich um einen Prozessor mit 32-Bit-Architektur, wird eine 32-Bit-Ganzzahllänge verwendet.

Es gibt mehrere Möglichkeiten, Ganzzahlen darzustellen:

Basis Beispiel
Decimal 98_222
Hexadezimal 0xff
Oktal 0o77
Binary 0b1111_0000
Byte (kann nur den u8-Typ darstellen) b'A'

Offensichtlich haben einige Ganzzahlen einen Unterstrich in der Mitte. Dieses Design erleichtert es, den Wert einer Zahl beim Eingeben einer sehr großen Zahl abzuschätzen.

Gleitkomma

Wie in anderen Sprachen unterstützt Rust 32-Bit-Gleitkommazahlen (f32) und 64-Bit-Gleitkommazahlen (f64). Standardmäßig repräsentiert 64.0 eine 64-Bit-Gleitkommazahl, weil moderne Computerprozessoren beide Arten von Gleitkommaberechnungen mit nahezu derselben Geschwindigkeit verarbeiten, aber 64-Bit-Gleitkommazahlen eine höhere Genauigkeit haben.

Beispiel

fn main() {
    let x = 2.0; // f64
    let y: f32 = 3.0; // f32
}

Mathematische Operationen

Verwenden Sie ein Programm, um mathematische Operationen zu veranschaulichen:

Beispiel

fn main() {
    let sum = 5 + 10; // Addition
    let difference = 95.5 - 4.3; // Subtraktion
    let product = 4 * 30; // Multiplikation
    let quotient = 56.7 / 32.2; // Division
    let remainder = 43 % 5; // Rest
}

Wenn man an viele Operatoren ein =-Zeichen anhängt, bedeutet das eine Operation auf sich selbst, zum Beispiel:

sum += 1Äquivalent zusum = sum + 1。

Hinweis:Rust unterstützt++und--nicht, weil diese beiden Operatoren, wenn sie vor oder nach einer Variable erscheinen, die Lesbarkeit des Codes beeinträchtigen und das Bewusstsein des Entwicklers für Variablenänderungen verringern.

Boolean

Boolean wird durch bool dargestellt, und sein Wert kann nur true oder false sein.

Zeichen

Der Zeichentyp wird durch char dargestellt.

Der char-Typ von Rust ist 4 Bytes groß und repräsentiert einen Unicode-Skalarwert. Das bedeutet, dass er nicht-englische Zeichen wie chinesische, japanische und koreanische Zeichen unterstützen kann. Sogar Emojis und Zero-Width-Spaces sind gültige char-Werte in Rust.

Unicode-Werte reichen von U+0000 bis U+D7FF und von U+E000 bis U+10FFFF (einschließlich). Allerdings existiert das Konzept des "Zeichens" in Unicode nicht, daher entspricht Ihre Intuition davon, was ein "Zeichen" ist, möglicherweise nicht dem Konzept eines Zeichens in Rust. Deshalb wird allgemein empfohlen, Zeichenketten zu verwenden, um UTF-8-Text zu speichern (nicht-englische Zeichen sollten möglichst in Zeichenketten vorkommen).

Hinweis:Da es zwei chinesische Textkodierungen gibt (GBK und UTF-8), kann die Verwendung chinesischer Zeichenketten in der Programmierung zu fehlerhaften Zeichen führen. Das liegt daran, dass das Quellprogramm und die Kommandozeile inkonsistente Textkodierungen haben. Daher müssen in Rust sowohl Zeichenketten als auch Zeichen UTF-8-Kodierung verwenden, sonst meldet der Compiler einen Fehler.

Zusammengesetzte Typen

Ein Tupel verwendet ein Paar( )Klammern, um eine Menge von Daten einzuschließen, die verschiedene Arten von Daten enthalten kann:

Beispiel

let tup: (i32, f64, u8) = (500, 6.4, 1);
// tup.0 ist gleich 500
// tup.1 ist gleich 6.4
// tup.2 ist gleich 1
let (x, y, z) = tup;
// y ist gleich 6.4

Ein Array verwendet ein Paar[ ]Klammern, um Daten desselben Typs einzuschließen.

Beispiel

let a = [1, 2, 3, 4, 5];
// a ist ein Integer-Array der Länge 5

let b = ["January", "February", "March"];
// b ist ein String-Array der Länge 3

let c: [i32; 5] = [1, 2, 3, 4, 5];
// c ist ein i32-Array mit einer Länge von 5

let d = [3; 5];
// Äquivalent zu let d = [3, 3, 3, 3, 3];

let first = a[0];
let second = a[1];
// Arrayzugriff

a[0] = 123; // Fehler: Array a ist nicht veränderbar
let mut a = [1, 2, 3];
a[0] = 4; // Korrekt
Weitere Erweiterungen