References&Borrowing

借用与引用的区别

  • 借用与引用是一种相辅相成的关系,若B是对A的引用,也可称之为B借用了A
  • 但是借用一词本意为要归还,所以在Rust用引用时,一定要注意应该在何处何时正确的“归回”借用/引用

规则

  • 同一时刻,最多只有一个可变借用(&mut T),或者2。
  • 同一时刻,可有0个或多个不可变借用(&T)但不能有任何可变借用。
  • 借用在离开作用域后释放。
  • 在可变借用释放前不可访问源变量。

可变借用与不可变借用

  • "不可变借用”是只读的
  • 同一时刻只能有一个可变借用(&mut T),且被借用的变量本身必须有可变性

总结

  • 借用不改变内存的所有者(Owner),借用只是对源内存的临时引用。
  • 在借用周期内,借用方可以读写这块内存,所有者被禁止读写内存;且所有者保证在有“借用”存在的情况下,不会释放或转移内存。
  • 失去所有权的变量不可以被借用(访问)。
  • 在租借期内,内存所有者保证不会释放/转移/可变租借这块内存,但如果是在非可变租借的情况下,所有者是允许继续非可变租借出去的。
  • 借用周期满后,所有者收回读写权限
  • 借用周期小于被借用者(所有者)的生命周期。