Διακίνηση δανεισμένων δεδομένων
Οι κανόνες της Rust για τις αναφορές μπορούν ίσως να συνοψιστούν καλύτερα ως εξής:
- Η Rust επιτρέπει είτε μία μεταβλητή αναφορά είτε πολλαπλές μη μεταβλητές αναφορές, αλλά όχι και τα δύο.
- Μία αναφορά δεν πρέπει ποτέ να ζει περισσότερο απ' τον ιδιοκτήτη της.
Αυτό συνήθως δεν αποτελεί πρόβλημα όταν διακινούμε αναφορές ανάμεσα σε συναρτήσεις.
Λεπτομέρειες μνήμης:
- Ο πρώτος κανόνας των αναφορών αποτρέπει τους αγώνες δεδομένων (data races). Τι είναι ένας αγώνας δεδομένων; Ένας αγώνας δεδομένων συμβαίνει όταν η ανάγνωση δεδομένων έχει την πιθανότητα να μην είναι συγχρονισμένη, λόγω της ύπαρξης ταυτόχρονης εγγραφής στα ίδια δεδομένα. Αυτό συμβαίνει συχνά στον προγραμματισμό πολλαπλών νημάτων.
- Ο δεύτερος κανόνας των αναφορών αποτρέπει την κακή χρήση αναφορών που παραπέμπουν σε ανύπαρκτα δεδομένα (γνωστό στη C ως dangling pointers).