Примитивы
Rust предоставляет доступ к большому количеству примитивов:
Скалярные типы
- знаковые целочисленные:
i8,i16,i32,i64иisize(размер указателя) - беззнаковые целочисленные:
u8,u16,u32,u64иusize(размер указателя) - вещественные:
f32,f64 charскалярное значение Unicode, например:'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; }