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.

Megjegyzés

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.

Tipp

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.

Figyelem

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.