【Rust】多次借用
阿新 • • 發佈:2021-12-17
環境
- Rust 1.56.1
- VSCode 1.61.2
概念
參考:https://doc.rust-lang.org/stable/rust-by-example/scope/borrow/alias.html
示例
進行借用時,可以以不可變借用多次。但是在不可變借用的時候,不能進行可變借用。同時不支援多次可變借用。
main.rs
struct Point { x: i32, y: i32, } fn main() { let mut point = Point { x: 0, y: 0 }; let borrowed_point = &point; let another_borrow = &point; // 編譯錯誤,後面還在使用不可變借用,不能進行可變借用 // let mutable_borrow = &mut point; println!( "Point has coordinates: ({}, {})", borrowed_point.x, another_borrow.y ); // 不可變借用使用後,可以進行可變借用 let mutable_borrow = &mut point; mutable_borrow.x = 5; mutable_borrow.y = 2; // let y = &point.y; // 編譯錯誤,還有可變借用,不能進行不可變借用 // println!("Point Z coordinate is {}", point.y); // 可變借用可以當不可變使用 println!( "Point has coordinates: ({}, {})", mutable_borrow.x, mutable_borrow.y ); // 可變借用使用完了,可以進行重新借用 let new_borrowed_point = &point; println!( "Point now has coordinates: ({}, {})", new_borrowed_point.x, new_borrowed_point.y ); }
總結
瞭解了 Rust 中的多次借用,有可變借用存在的時候,不能進行不可變借用,不能進行多次可變借用。