Ξενάγηση στη Rust Πίνακας Περιεχομένων

Smart unsafe κώδικας

Οι smart pointers τείνουν να χρησιμοποιούν αρκετά συχνά unsafe κώδικα. Όπως αναφέρθηκε νωρίτερα, είναι κοινά εργαλεία για την αλληλεπίδραση με τα χαμηλότερα επίπεδα της μνήμης στη Rust.

Τι είναι ο unsafe κώδικας; Ο unsafe κώδικας συμπεριφέρεται ακριβώς όπως ο κανονικός κώδικας Rust, με εξαίρεση κάποιες δυνατότητες για τις οποίες ο μεταφραστής της Rust δεν μπορεί να παρέχει εγγυήσεις.

Μία βασική δυνατότητα του unsafe κώδικα είναι η αναίρεση αναφοράς ενός ακατέργαστου δείκτη. Αυτό σημαίνει να παίρνουμε έναν ακατέργαστο δείκτη προς μία θέση στη μνήμη και να δηλώνουμε «εδώ υπάρχει μία δομή δεδομένων!», μετατρέποντάς τον σε μία αναπαράσταση δεδομένων που μπορούμε να χρησιμοποιήσουμε (π.χ. *const u8 σε u8).

Η Rust δεν έχει τρόπο να παρακολουθεί τη σημασία κάθε byte που γράφεται στη μνήμη. Επειδή η Rust δεν μπορεί να παρέχει εγγυήσεις για το τι υπάρχει σε έναν αυθαίρετο αριθμό που χρησιμοποιείται ως ακατέργαστος δείκτης, τοποθετεί την αναίρεση αναφοράς μέσα σ' ένα μπλοκ unsafe { ... }.

Οι smart pointers αναιρούν την αναφορά ακατέργαστων δεικτών εκτενώς, αλλά είναι καλά δοκιμασμένοι σ' αυτό που κάνουν.