Друкарня від WE.UA

Типи даних в Rust (part 1)

Rust - це мова програмування з строгою типізацією, фокусом на безпечній роботі з пам'яттю, що робить її дуже продуктивною та безпечною. Одним із ключових аспектів при розробці програм на Rust є типи даних. У цій статті ми розглянемо основні типи даних в Rust, як вони використовуються, та деякі особливості, що варто враховувати при їх використанні.

Скалярні типи

У Rust є чотири скалярні типи:
-Ціле число
-Число з рухомою комою
-Булевий тип
-Символьний тип

Ви можете впізнати їх з інших мов програмування.

Цілі типи

Ціле - це число без дробової частини. Таблиці нижче, показують вбудовані цілі типи в Rust. Ми можемо скористатися будь-яким з них для оголошення типу цілого числа.

i - integer, u - unsigned integer
8, 16, 32, 64 - вказує на розмір в бітах
usize та isize — залежить від архітектури системи, тобто вони будуть 32-bit або 64-bit. (Якщо не можете визначити, який розмір типу вам потрібен, то ці типи можуть бути корисними)

Цілі беззнакові:

Тип

Беззнаковий мінімум

Беззнаковий максимум

u8

0

255

u16

0

65,535

u32

0

4,294,967,295

u64

0

18,446,744,073,709,551,615

usize

0 (залежить від архітектури системи)

18,446,744,073,709,551,615

(залежить від архітектури системи)

Цілі знакові:

Тип

Знаковий мінімум

Знаковий максимум

i8

-128

127

i16

-32,768

32,767

i32

-2,147,483,648

2,147,483,647

i64

-9,223,372,036,854,775,808

9,223,372,036,854,775,807

isize

-9,223,372,036,854,775,808

(залежить від архітектури системи)

-9,223,372,036,854,775,807

(залежить від архітектури системи)

В цих двох табличках відсутній цілий тип даних i128 та u128 тому, що він має великий діапазон значень і використовується дуже рідко, але прикріплю для повного ознайомлення.
i128 — -170,141,183,460,469,231,731,687,303,715,884,105,728 до 170,141,183,460,469,231,731,687,303,715,884,105,727
u128 — 0 до 340,282,366,920,938,463,463,374,607,431,768,211,455

Як же зрозуміти, який тип цілого використати?

Якщо ви непевні, цілий тип за замовчуванням в Rust - i32, але варто використовувати типи залежно від конкретних потреб вашого коду та зберігати відповідність типів з максимальними розмірами та потребами пам'яті.

Важливо зазначити, що використання правильного типу може мати велике значення для ефективності програми, зокрема, для швидкодії та економії пам'яті. Тому, вибір типу повинен бути обґрунтований і залежати від потреб програми.

Числа з рухомою комою

Також відомі як дробові числа — це числа, які мають дробову частину, що дозволяє представляти дробові значення. Дробова частина зазвичай записується після десяткової крапки або коми.

У Rust для представлення чисел з рухомою комою використовуються типи даних f32 і f64.

f - float
f32 — забезпечує приблизну точність з 7-8 значущими цифрами після коми.
f64 — забезпечує вищу точність з 15-16 значущими цифрами після коми.

За допомогою цього коду, можемо дізнатись максимальне та мінімальне значення:

fn main() {
  let float_32_bit_min_value = std::f32::MIN;
  println!("The minimal value of f32 is: {}", float_32_bit_min_value);

  let float_32_bit_max_value = std::f32::MAX;
  println!("The maximal value of f32 is: {}", float_32_bit_max_value);
  
  let float_64_bit_min_value = std::f64::MIN;
  println!("The minimal value of f64 is: {}", float_64_bit_min_value);
  
  let float_64_bit_max_value = std::f64::MAX;
  println!("The maximal value of f64 is: {}", float_64_bit_max_value);
}

Output:
  The minimal value of f32 is: -340282350000000000000000000000000000000
  The maximal value of f32 is: 340282350000000000000000000000000000000
  The minimal value of f64 is: -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
  The maximal value of f64 is: 179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Булевий тип

Як і в більшості інших мов програмування, булевий тип у Rust має два можливі значення: true (істина) та false (неправда), позначається bool. Тип даних, який представляє логічні значення.

Булівський тип займає 1 байт.

fn main() {
  let t: bool = true;
  let f: bool = false;
}

Символьний тип

Символьний тип даних, використовується для зберігання одного символу.Символьний тип даних має розмір 4 байти, або 32 біти, а не 1 байт, як зазвичай буває в інших мовах програмування, позначається char.

fn main() {
  let heart_eyed_cat: char = '😻';
}

У більшості мов програмування символи кодуються за допомогою таблиці символів ASCII або Unicode, які надають числові значення для кожного символу. Символом може бути будь-який символ з таблиці символів ASCII або Unicode, такий як букви, цифри, знаки пунктуації, символи пробілу, спеціальні символи тощо.

Чому символьний тип займає 32 бітів а не 16 бітів?

Це пов'язано з тим, що Rust використовує модифікований варіант Unicode під назвою UTF-8. У UTF-8 кожен символ кодується послідовністю з одного або декількох байтів, кількість байтів залежить від величини коду символу. Оскільки в UTF-8 кожен символ може займати від 1 до 4 байтів, то в Rust для зберігання символів використовується 32-бітний тип char, щоб була можливість зберігати будь-який символ Unicode.

Висновок

Важливо пам'ятати, що в Rust типи даних мають строгу типізацію, що дозволяє програмістам створювати безпечний та ефективний код, що забезпечує високу продуктивність та безпеку виконання. Навчитися працювати з типами даних в Rust - це важлива частина вивчення мови та допоможе створювати більш ефективний та безпечний код.

Статті про вітчизняний бізнес та цікавих людей:

  • Бронеплівка для вікон: коли вона доречна та як обрати рішення

    Як бронеплівка утримує уламки, де її встановлюють та чому перед монтажем важливо оцінити стан і конструкцію скління.

    Теми цього довгочиту:

    Бронеплівка На Вікна
  • Шлейф сучасного смартфону та його призначення

    Шлейф - це тонка пластикова стрічка з ледь видимими доріжками і саме вона зʼєднує важливі компоненти мобільного, без яких він не запрацює. Власники пристроїв Xiaomi, які стикаються з потребою заміни цієї деталі, можуть підібрати відповідний варіант на сайті AKS.UA

    Теми цього довгочиту:

    Шлейф Для Мобільного
  • Чохли для iPhone 15: повний гід по кольорах, матеріалах і виробниках

    Перед тим як вибрати чохли для iPhone 15, варто визначитися, що саме ви хочете отримати від аксесуара. Комусь потрібен тонкий прозорий корпус, інший покупець шукає посилений захист, а для когось вирішальним стане колір або підтримка MagSafe

    Теми цього довгочиту:

    Чохли Для Iphone
  • Як побудована програма Meest China Academy

    Курс про товарний бізнес охоплює різні етапи роботи: від пошуку ідеї до перевірки товару, логістики та масштабування. Програма Meest China Academy містить 17 модулів, які послідовно розкривають ці теми без зведення всього навчання до однієї універсальної поради.

    Теми цього довгочиту:

    Meest
  • Які технології використані в Айфон 17

    Айфон 17 поєднує OLED-дисплей із частотою до 120 Гц, чип A19, дві камери Fusion 48 Мп і швидке заряджання через USB-C. У COMFY можна купити Айфон 17 з накопичувачем на 256 або 512 ГБ, вибравши конфігурацію відповідно до обсягу фото, відео та застосунків

    Теми цього довгочиту:

    Iphone 17
Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Denys Skobalo
Denys Skobalo@deuxnids

2Довгочити
386Перегляди
14Підписники
На Друкарні з 16 квітня 2023

Більше від автора

  • Про мій шлях в програмуванні

    Завжди мав інтерес до комп'ютерів ще з дитинства. В 2018 році я дізнався що таке програмування, і я вирішую розпочати свій шлях.

    Теми цього довгочиту:

    Програмування

Це також може зацікавити:

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Це також може зацікавити: