Введение
В этом лабе вы узнаете о различных примитивных типах, предоставляемых Rust, включая скалярные типы, такие как знаковые и беззнаковые целые числа, числа с плавающей точкой, юникодовые скалярные значения, логические значения и единичный тип. Также вы изучите составные типы, такие как массивы и кортежи, и узнаете, как аннотировать переменные их соответствующими типами или позволить Rust определить типы из контекста.
Примечание: Если в лабе не указано имя файла, вы можете использовать любое имя, которое хотите. Например, вы можете использовать
main.rs, скомпилировать и запустить его с помощьюrustc main.rs &&./main.
Примитивы
Rust предоставляет доступ к широкому спектру примитивов. Пример включает в себя:
Скалярные типы
- Знаковые целые числа:
i8,i16,i32,i64,i128иisize(размер указателя) - Беззнаковые целые числа:
u8,u16,u32,u64,u128иusize(размер указателя) - Числа с плавающей точкой:
f32,f64 charЮникодовые скалярные значения, такие как'a','α'и'∞'(по 4 байта каждый)bool, принимающий значенияtrueилиfalse- Единичный тип
(), единственное возможное значение которого представляет собой пустой кортеж:()
Несмотря на то, что значение единичного типа представляет собой кортеж, он не считается составным типом, так как не содержит нескольких значений.
Составные типы
- Массивы, такие как
[1, 2, 3] - Кортежи, такие как
(1, true)
Переменные всегда могут быть аннотированы типом. Числа могут быть дополнительно аннотированы с использованием суффикса или по умолчанию. Целые числа по умолчанию имеют тип i32, а числа с плавающей точкой - f64. Обратите внимание, что Rust также может определить типы из контекста.
fn main() {
// Переменные могут быть аннотированы типом.
let logical: bool = true;
let a_float: f64 = 1.0; // Стандартная аннотация
let an_integer = 5i32; // Аннотация с использованием суффикса
// Или будет использовано значение по умолчанию.
let default_float = 3.0; // `f64`
let default_integer = 7; // `i32`
// Тип также может быть определен из контекста.
let mut inferred_type = 12; // Тип i64 определяется из другой строки.
inferred_type = 4294967296i64;
// Значение изменяемой переменной может быть изменено.
let mut mutable = 12; // Изменяемая переменная с типом `i32`
mutable = 21;
// Ошибка! Тип переменной не может быть изменен.
mutable = true;
// Переменные могут быть перезаписаны с использованием скрытия.
let mutable = true;
}
Резюме
Поздравляем! Вы завершили лабу по Примитивам. Вы можете практиковаться в других лабах в LabEx, чтобы улучшить свои навыки.