Основы Rust для чайников
В связи с тем, что я последнее время углубленно стараюсь изучать язык программирования Rust, я бы хотел написать простенькую статью о его основах, и поделиться опытом взаимодействия с ним.
Начну с объяснения что такое вообще rust:
Rust — это язык программирования, созданный и поддерживаемый компанией Mozilla. Он представляет собой более современный аналог C-подобных языков и считается отличной альтернативой C++.
Rust отличается своими механизмами владения и безопасностью взаимодействия с памятью. Кроме того, он обладает высокой скоростью выполнения кода, сравнимой с C-подобными языками, и после компиляции может выполнять код с огромной скоростью.
А теперь приступим к установке самого языка, устанавливать будем на linux, по этому если у вас windows, то рекомендую изучить другую статью.
1. Для начала установим rustup. curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 2. Следуем инструкциям, и нажимаем enter. 3. Добавляем cargo в path. source $HOME/.cargo/env 4. Проверяем, установили ли мы rust. rustc --version 5. Если все успешно, переходим к следующему пункту
Открываем консоль, выбираем директорию для нашего проекта, а потом открываем её в консоли:
cd {директория где вы хотите разместить проект}cargo new {название которое вы хотите дать проекту}Потом в папке, директорию которой вы выбрали, вы найдете папку с названием проекта откроете её, а в ней такая структура:
my_project/ ├── src/ # Исходный код проекта │ ├── main.rs # Главный файл программы (точка входа) ├── Cargo.toml # Основной конфигурационный файл проекта ├── Cargo.lock # Файл зависимостей (генерируется автоматически)
Открываем main.rs, и видим в нем уже написанный пример кода, вот такой:
fn main() {
println!("Hello, World!");
}Это код вывода в консоль, сообщения Hello, World!, println - это как print в python, ну думаю понятно, если вы не прогуливали информатику в школе, а теперь объясню подробно синтаксис, если вы понимаете python, то знаете что такое def, так вот, fn main() это тоже самое, просто вместо def там fn.
Попробуем разобраться с переменными, у нас есть 2 варианта переменной
let text = "hello, world!"; let mut text = "hello, world!";
let - объявление переменной, text - название переменной, = {содержимое переменной}.
let - объявление переменной, mut - обозначение что переменную можно изменить после объявления, text - название переменной, = {содержимое переменной}.
Думаю это мы поняли, теперь объясню стандартную библиотеку std::io, в rust нет такого как в python, просто вводим input("подсказка для ввода"), здесь для этого std::io, вот как выглядит это в коде:
use std::io; //импортируем библиотеку
fn main() {
let mut text: String = String::new();
io::stdin() //это короче как бы из библиотеки хуйня, которая как input в python
.read_line(&mut text) //здесь мы говорим этой хуйне, чтобы она текст из завершенного ввода, записала в переменную text
.expect("Здесь мы пишем что должен вывести скрипт, если ему не удается прочитать ввод в консоль.");
let text = text.trim(); //превращаем text в text.trim(), это нужно для удаления лишних пробелов, и чтобы не было ошибок в работе программы.
println!("{}", text.trim());
}А теперь объясню стандартные циклы в rust, для тех кто вообще дуб дубом, объясняю. Циклы — конструкции в программировании, отвечающие за выполнения последовательностей действий в программе. Сейчас покажу пример одного из циклов, к примеру loop
fn main() {
let mut count: i32 = 0;
loop {
count += 1;
println!("Интерация: {}", count);
if count == 1000 {
break
}
}
} Повторяем интерацию пока не получим число 1000, а по достижению 1000, завершаем цикл с помощью break.
Есть ещё цикл while, этот цикл выполняется пока заданное знание является истинным, к примеру приведу этот код.
fn main() { // создаем функцию.
let mut x = 5; // объявляем переменную x.
while x > 0 { // устанавливаем while пока x больше 0, повторяем процесс.
println!("x = {}", x);
x -= 1; // с каждым повтором отнимаем по единице.
}
println!("Готово!"); // после завершения цикла, по законам линейной работы языков программирования, мы можем поставить вывод информации о завершении цикла.
}Чтож, небольшие основы мы узнали, однако предстоит ещё работа с файлами, с помощью std::fs - аналог библиотеки OS в python. Однако сейчас мы изучим структуры, что же такое вообще структуры?
Struct — Это что-то подобное шаблону, в rust, то есть это как шкаф, в котором есть полки, куда можно что-то положить. С помощью структур мы можем создавать что-то типо словаря как в python, или сохранять пароль и имя пользователя, а так же отсортировать данные.
Как же использовать структуры? Сейчас покажу на примере.
struct user {
name: String, // создаем ячейку для имени, с форматом String, для текста.
age: i32, // создаем ячейку для возраста с форматом i32, чтобы хранить числа
}
fn main() {
let person = user {
name: String::from("Егор"),
age: 25,
}; // применяем структуру на переменную
println!("Пользователя зовут: {a}, и ему {x} лет.", a=person.name, x=person.age); // используем переменную с структурой
}Сейчас более менее стало думаю понятно что за язык, и он становится более читаемым после этого. По этому объясню как взаимодействовать с cargo.