- СКАЛЯРНЫЙ ТИП ИЛИ ПРИМИТИВНЫЙ ТИП — представляет одно значение
- СОЕДИНИТЕЛЬНЫЙ ТИП — представляет собой список значений.
СКАЛЯРНЫЙ ТИП
Скалярный тип можно разделить на следующие:
- Целочисленные типы
- Типы с плавающей запятой
- Логический тип
- Тип персонажа
- Тип устройства
ЦЕЛЫЕ ТИПЫ:
- Целое число — это число без дробной части.
- Ранее мы использовали i32, так что это указывает на то, что в Rust значение переменной i32является целым числом со знаком (i) из32 бит.
- Таким образом, целое число имеет как знаковые, так и беззнаковые целые числа длиной 8, 16, 32, 64 бит. Это типы фиксированного размера.
- Существует дополнительная функция, называемая типами isize и usize, которая зависит от архитектуры компьютера. То есть он становится 64-битным при работе в 64-битной архитектуре и аналогично для 32-битной в 32-битной архитектуре. Это типы переменного размера.
- Этого диапазона достаточно, чтобы выразить размер любой коллекции.
Десятичный, шестнадцатеричный (0x), восьмеричный (0o) и двоичный (0b) также могут быть выражены.
ТИПЫ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ:
- Это числа с десятичной точкой.
- Они бывают двух типов: f32 с 32-битной одинарной точностью с плавающей запятой и f64 из 64 бита размеромдвойной точности с плавающей запятой.
- Значение по умолчанию — f64, что обеспечивает ту же скорость, что и f32, но может обеспечить большую точность.
ТИП СИМВОЛА:
- Он представляет отдельные скалярные значения Unicode, которые представляют собой ASCII.
- Заключено с ‘ ‘.
- В отличие от других языков, char в Rust не однобайтовый, а имеет 4 байта.
BOOLEAN TYPE:
- Представляет либо истину, либо ложь.
- Булевы значения в основном могут использоваться в выражении if.
ТИП ЕДИНИЦЫ:
- Единственное возможное значение — пустой кортеж.
ПРИМЕР 11.1: СКАЛЯРНЫЕ ТИПЫ
Имя файла: scalar_types/src/main.rs
fn main() { let num = 5; println!("THE NUMERICAL VALUE IS {}", num); println!(""); let floating_value = 5.89; let a: f32 = 3.0; println!("THE FLOAT VALUE IS {}", floating_value); println!("THE FLOAT VALUE IS {}", a); println!(""); let name = 'c'; println!("THE CHARACTER IS {}", name); println!(""); let boolean_value = true; let f : bool = false; println!("THE BOOLEAN VALUE IS {}", boolean_value); println!("THE BOOLEAN VALUE IS {}", f); println!(""); println!(""); println!("INTEGER ADDITION 10 + 2 = {}", 10 + 2); println!(""); println!(""); println!("INTEGER SUBTRACTION 1 - 20 = {}", 1i32 - 20); println!(""); println!("true AND false is {}", true && false); println!("true OR false is {}", true || false); println!("NOT true is {}", !true); // Bitwise operations println!("0011 AND 0101 is {:04b}", 0b0011u32 & 0b0101); println!("0011 OR 0101 is {:04b}", 0b0011u32 | 0b0101); println!("0011 XOR 0101 is {:04b}", 0b0011u32 ^ 0b0101); println!("1 << 5 is {}", 1u32 << 5); }
СОЕДИНЕННЫЕ ТИПЫ
Составные типы можно классифицировать как массивы, кортежи. Здесь происходит группировка нескольких значений.
МАССИВЫ:
- Массив — это набор элементов одного типа.
- Он фиксированного размера. То есть, как только размер объявлен, он не может увеличиваться или уменьшаться.
- Они хранятся непрерывно, начиная с индекса 0.
- Элементы размещаются внутри [ ], разделенные запятой (,)
ФРУКТЫ:
- Срезы похожи на массивы, но их размер неизвестен во время компиляции.
- Это объект из двух слов. Первое — это указатель на данные, а второе — длина среза.
- Размер слова определяется архитектурой процессора.
- Это обеспечивает эффективный доступ к части массива без копирования.
- Представляется как &[T], где T — сигнатура типа.
КОРПУСЫ:
- Это набор некоторых значений или элементов, которые могут быть самых разных типов.
- Элементы размещаются внутри ( ), разделенные запятой (,)
- Функции могут использовать кортежи для возврата нескольких значений, поскольку они могут хранить любое количество значений.