🦀 rust.hu
← összes téma

Rust ownership és borrowing érthetően

Tulajdonjog, move, kölcsönzés és lifetime: tanulási útmutató működő példákkal és az E0382/E0502 hibák javításával.

Az ownership azt mondja meg, melyik értékért ki felel, a borrowing pedig azt, hogyan engedhetünk ideiglenes hozzáférést más kódrészeknek. Ez a két fogalom együtt teszi lehetővé, hogy sok memóriahasználati hibát a fordító jelezzen. Nem kell minden értéket klónozni, és a lifetime-jelölések sem hosszabbítják meg az adatok életét.

Először figyeld meg, mi történik egy String átadásakor. Ezután írd át a függvényt úgy, hogy csak egy &str referenciát kérjen. Végül próbálj egyszerre olvasni és módosítani ugyanazt a kollekciót. Ezekkel az egyszerű kísérletekkel elkülöníthető a tulajdon átadása, az olvasási kölcsön és a kizárólagos módosítás.

Ha hibaüzenettel érkeztél, az E0382 és E0502 útmutatónál indulj. Ha a kód már fordul, de mindenhol clone szerepel, érdemes visszatérni a referenciákhoz. A cél az adat életútjának megtervezése: mikor kell valóban önálló másolat, és mikor elegendő egy rövid ideig kölcsönadni az eredetit.

Ajánlott tanulási sorrend

  1. Ownership és move

    Tulajdonosváltás és Copy típusok.

    tovább →
  2. Kölcsönzés és referenciák

    &T, &mut T és slice-ok.

    tovább →
  3. Borrow checker hibák javítása

    Konkrét E0382 és E0502 példák, fordított megoldásokkal.

    tovább →
  4. Lifetime-annotációk

    A bemeneti és kimeneti referenciák kapcsolata.

    tovább →

Kapcsolódó cikkek

Színes forráskód egy laptop sötét kijelzőjén, ferde közeli nézetből.
Alapok•4 perc•okt 17.

E0382 és E0502: borrow checker hibák javítása felesleges klónozás nélkül

Héber betűkészlet rekeszei egy régi nyomdai szedőszekrényben.
Alapok•5 perc•okt 17.

Magyar szöveg Rustban: byte, char, grapheme és Unicode-normalizálás

Színes HTML- és SVG-kódsorok sötét kódszerkesztőben, közelről fotózva.
Alapok•11 perc•nov 23.

Pattern matching a gyakorlatban: match, if let és while let

Homokóra világos háttér előtt.
Alapok•11 perc•nov 19.

Lifetime-ok érthetően: a Rust legfélelmetesebb témája leegyszerűsítve

Színes forráskód egy laptop sötét kijelzőjén, ferde közeli nézetből.
Alapok•10 perc•szept 21.

Compile-time varázslat: const fn és a const-eval limit eltűnése Rust 1.72-ben

Színes HTML- és SVG-kódsorok sötét kódszerkesztőben, közelről fotózva.
Alapok•11 perc•szept 11.

Trait-ek és trait objektumok: statikus vs dinamikus polimorfizmus