傳遞借來的資料 (borrowed data)
對 Rust 的參考規則最好的總結可能是: Rust's rules for references might best be summarized by:
- Rust 只允許一個可變的參考或者多個不可變的參考,但不會同時發生。
- 一個參考絕對不能活得比它的擁有者還長。
這並不會造成當你想傳遞參考到一個函式的困擾。
記憶體細節:
- 參考的第一條規則是為了避免資料競爭 (data race)。什麼是資料競爭?當你在讀取資料時,有機會因為其他寫入而拿到舊資料即是資料競爭。
這常常發生在多執行緒 (multi-threaded) 的程式裡。
- 第二條規則是為了避免誤用了參考到不存在的資料的參考 (在 C 裡稱作懸空指標 (dangling pointers))。