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

Παλιοί γνώριμοι

Ας σκεφτούμε μερικούς smart pointers που έχουμε ήδη δει, όπως το Vec<T> και το String.

Το Vec<T> είναι ένας smart pointer που απλώς έχει την κυριότητα μίας περιοχής μνήμης από byte. Ο μεταφραστής της Rust δεν έχει ιδέα τι υπάρχει σ' αυτά τα byte. Ο smart pointer ερμηνεύει τι σημαίνει να πάρουμε στοιχεία απ' την περιοχή μνήμης που διαχειρίζεται, κρατά λογαριασμό του πού ξεκινούν και πού τελειώνουν οι δομές δεδομένων μέσα σ' αυτά τα byte, και τέλος αναιρεί την αναφορά ενός ακατέργαστου δείκτη σε δομές δεδομένων, δίνοντάς μας μία ωραία, εργονομική διεπαφή για χρήση (π.χ. my_vec[3]).

Παρομοίως, το String κρατά λογαριασμό μίας περιοχής μνήμης από byte, περιορίζει προγραμματιστικά το περιεχόμενο που γράφεται σ' αυτήν ώστε να είναι πάντα έγκυρο utf-8, και βοηθά ν' αναιρεθεί η αναφορά αυτής της περιοχής μνήμης σ' έναν τύπο &str.

Και οι δύο αυτές δομές δεδομένων χρησιμοποιούν unsafe αναίρεση αναφοράς ακατέργαστων δεικτών για να κάνουν τη δουλειά τους.

Λεπτομέρειες μνήμης: