1. СКАЛЯРНЫЙ ТИП ИЛИ ПРИМИТИВНЫЙ ТИП — представляет одно значение
  2. СОЕДИНИТЕЛЬНЫЙ ТИП — представляет собой список значений.

СКАЛЯРНЫЙ ТИП

Скалярный тип можно разделить на следующие:

  • Целочисленные типы
  • Типы с плавающей запятой
  • Логический тип
  • Тип персонажа
  • Тип устройства

ЦЕЛЫЕ ТИПЫ:

  • Целое число — это число без дробной части.
  • Ранее мы использовали 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 — сигнатура типа.

КОРПУСЫ:

  • Это набор некоторых значений или элементов, которые могут быть самых разных типов.
  • Элементы размещаются внутри ( ), разделенные запятой (,)
  • Функции могут использовать кортежи для возврата нескольких значений, поскольку они могут хранить любое количество значений.