English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Типы данных Rust

Основные типы данных в языке Rust следующие.

Целые типы данных (Integer)

Целые типы данных (integer) делятся на несколько видов в зависимости от длины бит и наличия знака:

Длина битовС знакамиБеззнаковое
8-biti8u8
16-biti16u16
32-biti32u32
64-biti64u64
128-biti128u128
archisizeusize

Типы данных isize и usize используются для измерения размера данных, длина битов этих целых чисел зависит от целевой платформы, на которой они работают, и на 32-битных архитектурах процессоров используется 32-битная длина чисел.

Есть несколько способов выражения целых чисел:

Система счисленияПример
Десятичный98_222
Шестнадцатеричный0xff
Октальный0o77
Двоичный0b1111_0000
Байт (может представлять только u8)b'A'

Конечно, в некоторых целых числах есть подстрока с подчеркиванием, этот дизайн позволяет людям更容易 оценить примерное значение числа при вводе большого числа.

Тип плавающей точки (Floating-Point)

Rust, как и другие языки, поддерживает 32-битные плавающие числа (f32) и 64-битные плавающие числа (f64). По умолчанию, 64.0 будет представлять собой 64-битное плавающее число, так как современные процессоры компьютеров имеют примерно одинаковую скорость выполнения обоих типов плавающих чисел, но 64-битные плавающие числа имеют более высокую точность.

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

Математические операции

Использовать программный код для phảnотражения математических операций:

fn main() { 
    let sum = 5 + 10; // сложение 
    let difference = 95.5 - 4.3; // вычитание 
    let product = 4 * 30; // умножение 
    let quotient = 56.7 / 32.2; // деление 
    let remainder = 43 % 5; // по модулю
}

Многие операторы могут быть добавлены = для обозначения самовозращения, например:

sum += 1 эквивалентно sum = sum + 1.

Внимание:Rust не поддерживает ++ и --, так как эти операторы,出现的变量的 вокруг, могут повлиять на читаемость кода и ослабить способность разработчика осознавать изменения в переменных.

Булево значение

Булево значение представляется с помощью bool, значения могут быть только true или false.

Тип символа

Тип символа представляется с помощью char.

Тип char в Rust занимает 4 байта и представляет собой значение Unicode-скейл, что означает, что он может поддерживать символы, такие как китайские, японские и корейские символы, а также смайлики и нулевые пробельные символы, которые являются эффективными значениями char в Rust.

Интервал значений Unicode составляет от U+0000 до U+D7FF и от U+E000 до U+10FFFF (включительно). Однако, концепция "символа" не существует в Unicode, поэтому ваше представление о том, что такое "символ", может не соответствовать концепции символа в Rust. Поэтому рекомендуется использовать строки для хранения текста UTF-8 (неenglish символы должны появляться в строке尽可能 часто).

Внимание:Поскольку у китайских текстов есть два кодирования (GBK и UTF-8), использование китайских строк в программировании может привести к возникновению сбоев кодирования. Это связано с тем, что кодирование текста в исходном коде и в командной строке не совпадает, поэтому в Rust строки и символы должны использовать кодирование UTF-8,否则 компилятор будет выдавать ошибки.

Композитные типы

Композитные типы

let tup: (i32, f64, u8) = (500, 6.4, 1);
// tup.0 равно 500
// tup.1 равно 6.4
// tup.2 равно 1
let (x, y, z) = tup;
// y равно 6.4

Массивы включают в себя однотипные данные, заключенные в парные скобки [ ].

let a = [1, 2, 3, 4, 5];
// a — это массив целых чисел длиной 5
let b = ["January", "February", "March"];
// b — это массив строк длиной 3
let c: [i32; 5] = [1, 2, 3, 4, 5];
// c — это массив i32 длиной 5
let d = [3; 5];
// эквивалентно let d = [3, 3, 3, 3, 3];
let first = a[0];
let second = a[1];
// доступ к массиву
a[0] = 123; // ошибка: массив a не изменяем
let mut a = [1, 2, 3];
a[0] = 4; // верно