Cél és előfeltételek
Ebben a leckében megírod az első igazi Rust-programodat: kiírsz szöveget a képernyőre, formázott értékekkel, és megtanulod, hogyan hagyhatsz kommenteket a kódban. Az előző leckében ("Cargo: build, run, test") megismerted a cargo new, cargo build, cargo run és cargo check parancsokat — most ezeket használjuk élesben, egy saját, kis projekten.
Előfeltétel: legyen feltelepítve a Rust toolchain a rustup segítségével, és tudd, hogyan hozol létre új projektet cargo new-val.
Előkészítés
Hozz létre egy új projektet:
cargo new hello_rustacean
cd hello_rustacean
A cargo new egy kész Cargo.toml-t és egy src/main.rs fájlt generál. A Cargo.toml így néz ki (a verziószám nálad eltérő lehet):
[package]
name = "hello_rustacean"
version = "0.1.0"
edition = "2024"
[dependencies]
Ehhez a leckéhez nincs szükség külső crate-re, a [dependencies] szakasz maradhat üresen.
Az fn main — a program belépési pontja
Nyisd meg a src/main.rs fájlt. Alapból ezt találod benne:
fn main() {
println!("Hello, world!");
}
A fn main egy függvénydefiníció: az fn kulcsszó jelzi, hogy függvényt hozunk létre, a neve main. Amikor futtatod a programot (cargo run), a Rust mindig a main függvényben kezdi a futást — ez a program belépési pontja. Minden végrehajtható Rust-programnak pontosan egy main függvénye van.
A kapcsos zárójelek { } közé kerül a függvény törzse, azaz azok az utasítások, amik lefutnak, amikor a program elindul.
A main függvény most nem fogad be paramétereket, és nem ad vissza értéket sem. Ez teljesen normális egy egyszerű programnál.
println! és a {} formázás
A println! egy makró (innen az ! a neve végén), amely szöveget ír ki a szabványos kimenetre, majd sortörést tesz a végére. A legegyszerűbb használata egy szöveges literál:
fn main() {
println!("Szia, Rustacean!");
}
Ha egy értéket be akarsz illeszteni a kiírt szövegbe, használj {} helyőrzőt, és utána, vesszővel elválasztva add meg a beillesztendő értéket:
fn main() {
println!("A kedvenc számom: {}", 7);
println!("{} és {} is szeretik a Rustot.", "Alice", "Bob");
}
Egy println! hívásban tetszőlegesen sok {} helyőrző lehet, amíg annyi értéket adsz meg utánuk, amennyi helyőrző van, a megfelelő sorrendben.
Ha csak szöveget akarsz kiírni sortörés nélkül, használhatod a print! makrót — de a gyakorlatokban most maradjunk a println!-nél, mert olvashatóbb kimenetet ad.
Mivel a let-et még nem ismerjük, most csak közvetlenül megadott literál értékekkel dolgozunk a {} helyőrzőkhöz — ez tökéletesen elég egy statikus szöveg formázott kiírásához.
Kommentek
A kommentek olyan szövegrészek a kódban, amiket a fordító figyelmen kívül hagy — ezek neked, vagy a kódot később olvasóknak szólnak. Rust-ban két fő fajtájuk van:
fn main() {
// Ez egy egysoros komment, a sor végéig tart.
println!("Hello, rustacean!"); // Ez is komment, a kód után.
/* Ez egy többsoros komment,
ami több sort is átfoghat. */
println!("Kommentekkel a kód érthetőbb.");
}
Az egysoros komment //-vel kezdődik, a többsoros pedig /* és */ közé kerül. Kommentelj bátran — a rust.hu-s stílus is az, hogy inkább egy komment magyarázzon többet, mint kevesebbet.
A kommentek nem futnak le, és nem jelennek meg a kimeneten. Ne keverd össze a println!-lel kiírt szöveget a kommenttel!
Lépésenkénti feladat
1. lépés — Írj ki egy köszöntést
Módosítsd a src/main.rs fájlt úgy, hogy a program a saját nevedet is kiírja, formázva, egyetlen println! hívással. Például: "Szia, [neved]! Üdv a Rust világában."
Megoldás
fn main() {
println!("Szia, {}! Üdv a Rust világában.", "Eszter");
}
2. lépés — Több érték egy sorban
Írj ki egy sort, amely két {} helyőrzőt használ: az egyik a kedvenc programozási nyelved neve, a másik pedig hány éve (egy egész szám literálként) tanulod.
Megoldás
fn main() {
println!("A kedvenc nyelvem a {}, {} éve tanulom.", "Rust", 1);
}
3. lépés — Kommentekkel dokumentálva
Vedd az előző megoldást, és egészítsd ki egy egysoros kommenttel, ami elmagyarázza, mit csinál a println! sor, valamint egy többsoros kommenttel a fájl elején, ami leírja, mi a program célja.
Megoldás
/* Ez a program egy rövid bemutatkozó szöveget
ír ki a képernyőre, formázott értékekkel. */
fn main() {
// Kiírjuk a kedvenc nyelvünket és hogy hány éve tanuljuk.
println!("A kedvenc nyelvem a {}, {} éve tanulom.", "Rust", 1);
}
4. lépés — Futtatás
Futtasd a programot a cargo run paranccsal, és ellenőrizd, hogy a kimenet a várt szöveget adja.
Megoldás
cargo run
A kimenetnek valahogy így kell kinéznie:
A kedvenc nyelvem a Rust, 1 éve tanulom.
Teljes referencia-megoldás
// Ez a program bemutatja a println! makró használatát,
// a {} formázási helyőrzőket és a kommenteket.
fn main() {
// Egyszerű szöveg kiírása.
println!("Hello, rustacean!");
// Formázott kiírás egy helyőrzővel.
println!("A kedvenc számom: {}", 7);
/* Formázott kiírás több helyőrzővel,
több érték egyszerre. */
println!("{} és {} is szeretik a Rustot.", "Alice", "Bob");
// Bemutatkozó sor a saját adatokkal.
println!("A kedvenc nyelvem a {}, {} éve tanulom.", "Rust", 1);
}
Bónusz-kihívások
- Írj olyan
println!sort, amely legalább négy{}helyőrzőt tartalmaz egyetlen mondatban, és minden helyőrzőhöz más-más típusú literál tartozik (szöveg, egész szám). - Készíts egy kis "vizitkártya" kimenetet: több
println!hívással írd ki a neved, a kedvenc nyelvedet és egy rövid mottót, minden sort kommentekkel magyarázva, hogy mit ír ki.
Mi jön legközelebb
A következő leckében ("Változók és mutability") megtanulod, hogyan tárolhatsz értékeket névvel ellátott helyeken a let kulcsszóval, és hogy mit jelent a mutability — azaz mikor módosítható egy érték, és mikor nem. Ez lesz az alapja annak, hogy a programjaid ne csak kiírjanak dolgokat, hanem valódi adatokkal is dolgozzanak.