Tour of Rust Inhoudsopgave

Smart Unsafe-Code

Smart pointers gebruiken vrij vaak unsafe-code. Zoals eerder vermeld, zijn het gebruikelijke hulpmiddelen voor het interageren met de laagste niveaus van het geheugen in Rust.

Wat is unsafe-code? Unsafe-code gedraagt zich precies als normale Rust-code, met uitzondering van enkele mogelijkheden waarover de Rust-compiler geen garanties kan geven.

Een belangrijke mogelijkheid van unsafe-code is het dereferentiëren van een raw pointer. Dat betekent het nemen van een raw pointer naar een positie in het geheugen en te verklaren "hier bestaat een gegevensstructuur!", en het om te zetten in een representatie van gegevens die u kunt gebruiken (bijv. *const u8 naar u8).

Rust heeft geen manier om de betekenis bij te houden van elke byte die naar het geheugen wordt geschreven. Omdat Rust geen garanties kan geven over wat er bestaat op een willekeurig getal dat wordt gebruikt als raw pointer, plaatst het de dereferentie in een unsafe { ... }-blok.

Smart pointers dereferentiëren raw pointers uitgebreid, maar ze zijn goed getest in wat ze doen.