Rust Уводни Водич за Почетнике: Од Игре до Програмирања, Брзо Упознавање са Rust Екосистемом
Rust Уводни Водич за Почетнике: Од Игре до Програмирања, Брзо Упознавање са Rust Екосистемом
Rust се брзо развија, и није само програмски језик, већ и динамичан екосистем. Од survival игара до високо-перформансног системског програмирања, Rust је свуда присутан. Овај чланак ће, полазећи од дискусија на X/Twitter-у, пружити брзи уводни водич за Rust почетнике, покривајући Rust апликације, ресурсе за учење, као и неке корисне алате.
I. Шта је Rust? Зашто га је вредно учити?
Rust је системски програмски језик, фокусиран на безбедност, брзину и конкурентност. Намењен је решавању уобичајених проблема са безбедношћу меморије у C и C++, док истовремено пружа перформансе еквивалентне или чак веће од тих језика.
Предности Rust-а:
- Безбедност меморије: Rust-ов систем власништва (ownership) и провера позајмљивања (borrow checker) могу спречити проблеме као што су нулти показивачи (null pointers), трке података (data races) у време компајлирања.
- Високе перформансе: Rust се компајлира у ефикасан машински код и има моћне могућности апстракције без трошкова (zero-cost abstraction).
- Безбедност конкурентности: Rust-ов систем типова може осигурати безбедност конкурентног кода, избегавајући трке података.
- Крос-платформски: Rust подржава различите оперативне системе и архитектуре, укључујући Windows, Linux, macOS, WebAssembly, итд.
- Активна заједница: Rust има динамичну заједницу која пружа богатство библиотека, алата и подршке.
Примене Rust-а:
- Оперативни системи и уграђени системи: Због својих високих перформанси и безбедности, Rust је веома погодан за развој кернела оперативних система, драјвера и софтвера за уграђене уређаје.
- WebAssembly (Wasm): Rust се може компајлирати у Wasm, омогућавајући покретање кода високих перформанси у прегледачу.
- Алати командне линије: Rust пружа моћне оквире за развој алата командне линије, као што су
clapиstructopt. - Мрежно програмирање: Rust-ова
tokioбиблиотека пружа асинхроно окружење за извршавање (runtime), што олакшава писање мрежних апликација високих перформанси. - Развој игара: Иако није популаран као C++, Rust добија на значају у области развоја игара, на пример, open source survival игра
Rustје сама по себи развијена помоћу Unity енџина и C#, али се део логике на серверској страни може оптимизовати коришћењем Rust-а.
II. Од игре Rust до Rust програмског језика
Дискусија на X/Twitter-у је поменула survival игру Rust, која је уско повезана са Rust програмским језиком. Иако користе исто име, то су различите ствари. Rust игра је multiplayer online survival игра, док је Rust програмски језик који се користи за изградњу разних софтвера.
Игра Rust:
- Је multiplayer online survival игра у којој играчи морају да преживе у дивљини, граде базе и комуницирају са другим играчима.
- Развијена је помоћу Unity енџина и C#.
- Може се купити на Steam-у и често има промотивне активности.
Rust програмски језик:
- Користи се за развој разних софтвера, укључујући оперативне системе, енџине прегледача, мрежне сервере, игре, итд.
- Отворен је код и крос-платформски.
- Има моћан систем типова и карактеристике безбедности меморије.
Ако сте играч игре Rust и желите да научите Rust програмски језик, размотрите следеће кораке:
- Инсталирајте Rust алатке: Преузмите и инсталирајте
rustupса , то је алат за управљање верзијама Rust-а. - Научите основе Rust-а: Прочитајте званични туторијал "The Rust Programming Language" (познат као "The Book") да бисте разумели основну синтаксу Rust-а, систем власништва, проверу позајмљивања, итд.
- Практични пројекти: Учврстите своје знање писањем једноставних алата командне линије, веб сервера или игара.
- Учествујте у заједници: Придружите се Rust заједници, комуницирајте са другим Rust програмерима и учите из њихових искустава.## III. Postavljanje Rust razvojnog okruženja
Postavljanje Rust razvojnog okruženja je veoma jednostavno, potrebno je samo instalirati rustup. rustup će automatski instalirati Rust kompajler, standardnu biblioteku i druge neophodne alate.
Koraci:
- Preuzmite
rustup: Posetite , i preuzmite odgovarajućirustupinstalacioni program za vaš operativni sistem. - Pokrenite instalacioni program: Pratite uputstva instalacionog programa.
- Konfigurišite promenljive okruženja:
rustupće automatski konfigurisati promenljive okruženja, ali ih možete i ručno konfigurisati. - Verifikujte instalaciju: Otvorite terminal, pokrenite
rustc --versionicargo --version, ako se ispravno prikaže broj verzije, to znači da je instalacija uspešna.
Primer koda:
rustc --version # Pogledajte verziju Rust kompajlera
cargo --version # Pogledajte verziju Cargo menadžera paketa
IV. Brzi uvod u osnovnu Rust sintaksu
Slede neke od osnovnih Rust sintaksi koje vam mogu pomoći da brzo počnete:
-
Deklaracija promenljivih:
let x = 5; // Nepromenljiva promenljiva let mut y = 10; // Promenljiva promenljiva const PI: f64 = 3.1415926; // Konstanta -
Tipovi podataka:
-
Celobrojni:
i8,i16,i32,i64,i128,u8,u16,u32,u64,u128,isize,usize -
Pokretni zarez:
f32,f64 -
Bulov:
bool(true,false) -
Karakter:
char(Unicode karakter) -
String:
String,&str -
Tuple:
(i32, f64, char) -
Niz:
[i32; 5] -
Sajs:
&[i32] -
Struktura:
struct Point { x: i32, y: i32, } -
Enum:
enum Color { Red, Green, Blue, }
-
-
Funkcije:
fn add(x: i32, y: i32) -> i32 { x + y } -
Kontrola toka:
-
ifizjava:if x > 5 { println!("x is greater than 5"); } else if x == 5 { println!("x is equal to 5"); } else { println!("x is less than 5"); } -
looppetlja:loop { println!("This will loop forever"); break; // Izlaz iz petlje } ```## I. Шта је Rust?
-
Rust је системски програмски језик који се фокусира на сигурност, брзину и паралелизам. Дизајниран је да спречи грешке у сегментацији и обезбеди сигурност нити без жртвовања перформанси. Rust је погодан за развој системског софтвера, алата командне линије, веб апликација и других перформансно критичних апликација.
II. Зашто одабрати Rust?
- Сигурност меморије: Rust има строг систем власништва и позајмљивања који спречава грешке у меморији као што су висећи показивачи и двоструко ослобађање.
- Перформансе: Rust има перформансе блиске C и C++, али са већом сигурношћу.
- Конкурентност: Rust олакшава писање сигурних и ефикасних паралелних програма.
- Екосистем: Rust има растући екосистем са много корисних библиотека и алата.
- Употребљивост: Rust има модеран систем типова и функције као што су подударање шаблона и закључивање типова, што га чини лаким за писање и одржавање.
III. Инсталација и подешавање
-
Инсталирајте Rust:
Можете инсталирати Rust помоћу
rustup, званичног алата за инсталацију и управљање Rust-ом. Идите на https://www.rust-lang.org/tools/install и пратите упутства. -
Проверите инсталацију:
Отворите терминал и покрените следећу команду:
rustc --version cargo --versionАко су Rust и Cargo успешно инсталирани, приказаће се њихове верзије.
-
Подесите VS Code (опционо):
Препоручује се коришћење VS Code са Rust екстензијом за боље искуство развоја. Инсталирајте екстензију
rust-analyzer.
IV. Основни концепти и синтакса
1. Основни типови података
- Цели бројеви:
i32,i64,u32,u64итд. (са предзнаком и без предзнака) - Бројеви са помичним зарезом:
f32,f64 - Boolean:
bool(true или false) - Карактер:
char(Unicode карактер) - Tuple:
(i32, f64, char)(група вредности различитих типова) - Низ:
[i32; 5](низ са фиксном величином) - Slice:
&[i32](референца на део низа)
2. Променљиве и константе
fn main() {
// Променљива (mutable)
let mut x = 5;
println!("Вредност x је: {}", x);
x = 6;
println!("Вредност x је: {}", x);
// Константа (immutable)
const Y: i32 = 10;
println!("Вредност Y је: {}", Y);
}
3. Функције
fn add(a: i32, b: i32) -> i32 {
// Последњи израз у функцији се враћа као резултат
a + b
}
fn main() {
let result = add(5, 3);
println!("Резултат је: {}", result);
}
4. Власништво (Ownership) и позајмљивање (Borrowing)
Rust-ов систем власништва је кључни концепт за сигурност меморије. Свака вредност у Rust-у има власника, а када власник изађе из опсега, вредност се ослобађа.
fn main() {
let s1 = String::from("hello"); // s1 постаје власник стринга
let s2 = s1; // s1 премешта власништво на s2, s1 више није валидан
// println!("{}", s1); // Ово ће изазвати грешку при компилацији
println!("{}", s2);
// Позајмљивање (Borrowing)
let s3 = String::from("hello");
let len = calculate_length(&s3); // Позајмљујемо референцу на s3
println!("Дужина '{}' је {}", s3, len);
}
fn calculate_length(s: &String) -> usize {
s.len() // s је референца, не преузима власништво
}
5. Структуре (Structs) и Enum-и
// Структура
struct Rectangle {
width: u32,
height: u32,
}
impl Rectangle {
fn area(&self) -> u32 {
self.width * self.height
}
}
// Enum
enum Color {
Red,
Green,
Blue,
}
fn main() {
let rect = Rectangle {
width: 30,
height: 50,
};
println!("Површина правоугаоника је: {}", rect.area());
let color = Color::Green;
match color {
Color::Red => println!("Боја је црвена"),
Color::Green => println!("Боја је зелена"),
Color::Blue => println!("Боја је плава"),
}
}
6. Контрола тока
-
if/elseизјаве:let number = 7; if number < 5 { println!("Услов је био тачан"); } else { println!("Услов је био нетачан"); } -
loopпетља:loop { println!("поново!"); break; } -
whileпетља:let mut i = 0; while i < 5 { println!("Вредност i је: {}", i); i += 1; } -
forпетља:let a = [10, 20, 30, 40, 50]; for element in a.iter() { println!("вредност је: {}", element); }
7. Руковање грешкама
Rust користи Result и panic! за руковање грешкама.
use std::fs::File;
use std::io::ErrorKind;
fn main() {
let f = File::open("hello.txt");
let _f = match f {
Ok(file) => file,
Err(error) => match error.kind() {
ErrorKind::NotFound => match File::create("hello.txt") {
Ok(fc) => fc,
Err(e) => panic!("Проблем при креирању фајла: {:?}", e),
},
other_error => {
panic!("Проблем при отварању фајла: {:?}", other_error)
}
},
};
}
V. Корисни алати и ресурси за учење
- Cargo: Rust-ов менаџер пакета и алат за изградњу, користи се за управљање зависностима, изградњу пројеката и покретање тестова.
- Rust Analyzer: Моћан Rust језик сервер, пружа аутокомплетирање кода, проверу синтаксе, рефакторинг и друге функције. Препоручује се инсталирање одговарајућег додатка у VS Code.
- Clippy: Алат за статичку анализу Rust кода, може да провери потенцијалне проблеме у коду и да пружи предлоге за побољшање.
- crates.io: Rust-ов репозиторијум пакета, сличан npm (JavaScript) или PyPI (Python).
- Званична документација: Садржи комплетну документацију за Rust језик.
- Rust by Example: Пружа велики број примера Rust кода.
- The Rust Programming Language (The Book): Званични Rust туторијал, топло се препоручује за читање.
- Rustlings: Интерактивни алат за учење Rust-а, учи се Rust кроз решавање низа вежби.
- Онлајн курсеви: Постоји много Rust онлајн курсева на платформама као што су Udemy, Coursera итд.
VI. Правци за даље учење
- Асинхроно програмирање (async/await): Користите
tokioилиasync-stdза писање високих перформанси конкурентних програма. - WebAssembly (Wasm): Компилирајте Rust код у Wasm и покрените га у прегледачу.
- Уграђени развој: Користите Rust за развој софтвера за уграђене системе.
- Blockchain развој: Користите Rust за развој blockchain апликација, као што је Solana развој паметних уговора.





