"Подивився Бог на те що створив він, і зрозумів що це добре, і продовжив писати на 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)