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
let x = 2.0; // f64
let y: f32 = 3.0; // f32
}
Mathematische Operationen
Verwenden Sie ein Programm, um mathematische Operationen zu veranschaulichen:
Beispiel
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
// 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
// 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