Куток

Обкладинка для допису Як я Rust вчив. День 2.
Артем Дадаш'янц
Артем Дадаш'янц

Додано

Як я Rust вчив. День 2.

"Подивився Бог на те що створив він, і зрозумів що це добре, і продовжив писати на Rust"

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

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

Менше тексту. Що там у тебе?

У мене все супер. Почнемо з того що я нарешті вивчив типи даних у Rust.

Влаштовані вони мега зручно. У тому сенсі що у багатьох мовах є багато назв котрі треба оце запам'ятовувати, скільки вони там місця займають, і так далі. До прикладу візьмемо C#, от скажіть мені без гуглу скільки займає пам'яті byte?Якщо ви знаєте то ви молодець. Але в назві не показано ані розмір, а ні те, що конкретно там може лежати.

Коли я був новачком у C#, то це мене трішки бісило. Типу, нащо оце придумали 100-500 назв. І виявляється у Rust такого приколу нема.

Якщо казати за конкретно цілочисельні типи даних, то їх всього два: i та u. Де перший - просто звичайне число, без плаваючої коми, а друге - таке саме, але лише додатнє. Тобто i може бути менше 0, але завжди ціле, а u не може бути менше 0;

А тепер увага. Якщо ви хочете щоб у вашу змінну записали якесь маленьке число - вкажіть як тип даних i8, трішки більше - i16, і так далі, просто ставите кількість пам'яті котру ви хочете виділити на вашу змінну. Тобто:

Вибачайте що картинкою, нажаль платформа поки не підтримує таблиці (не вина розробників).

Так от, це мега зручно. Тобі не треба пам'ятати 100-500 назв, ти просто пам'ятаєш 2 букви, і те, які розміри доступні. Все. Максимально просто.

У тих змінних куди ви хочете покласти не ціле число є також всього 2 типи. Але це вже прям з розмірами. Це f32, та f64.

Символьний тип char як був у практично всіх мовах, так і лишився. Тут все з ним так само. Про таку штуку як String поговоримо потім.

Є якась різниця у математичних операціях між цими типами?

Насправді я не побачив. Якщо ви до цього писали на якійсь Java, або священному C#, то різниці нема. Хоча та ж подруга, котра до цього трішки знала C++ різниці також не побачила.

Шо по массивах усіляких там?

Ну дивіться. Окрім масивів тут є так звані "кортежі". Що це таке? Ось приклад:

fn main() {
    let x: (i32, f64, u8) = (500, 6.4, 1);

    let five_hundred = x.0;

    let six_point_four = x.1;

    let one = x.2;
}
Увімкніть повноекранний режим Вийти з повноекранного режиму

Я її назву так - "Штука, в котру одразу можна записати декілька типів даних, і отримати їх по індексу.". Тобто якщо в мене кортеж записаний у змінну x, то я щоб звернутися до елемента кортежу, пишу x.індекс, все просто як 2 копійки.

Массиви тут виглядають як звичайні масиви:

fn main() {
    let a = [1, 2, 3, 4, 5];
}
Увімкніть повноекранний режим Вийти з повноекранного режиму

Якщо хочете одразу конкретний тип даних у массив:

let a: [i32; 5] = [1, 2, 3, 4, 5];
Увімкніть повноекранний режим Вийти з повноекранного режиму

Або якщо не хочеш писати кожному елементу значення - робиш отак:

let a: [i32; 5];
Увімкніть повноекранний режим Вийти з повноекранного режиму

Або якщо хочеш щоб у всьому массиві одразу було якесь однакове значення на всі елементи - отак:

let a = [2; 5];
Увімкніть повноекранний режим Вийти з повноекранного режиму

Висновок

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

Топ коментарі (0)

Куток

Підписуйтеся на наші соціальні мережі:
Telegram
Twitter
Facebook


Тепер у нас також є Youtube канал!