Appearance
Rust 所有权与借用:理解编译期的内存安全约束
修订于 2026-10-12。本文不包含未经验证的生产案例或性能结论。
Rust 用所有权规则管理资源。一般情况下,一个值有一个所有者;所有者离开作用域时,相关资源会被释放。把持有所有权的值传给别处可能发生移动,之后原变量不能继续使用。这些规则由编译器检查,帮助避免悬垂引用和重复释放。
借用如何减少移动
不可变引用允许多个读取者访问同一值;可变引用允许修改,但必须满足排他访问规则。编译器通过生命周期检查,确保引用不会比被引用的数据活得更久。这里的“生命周期”主要描述引用之间的有效关系,不等于程序员为每个值手工计时。
它解决什么,不解决什么
所有权与借用能排除许多内存安全错误,但不能保证业务逻辑正确、没有死锁,也不能防止所有资源耗尽。unsafe 代码可以承担额外的正确性责任;外部库和系统接口也要单独审查。
学习时可从小例子入手:先让编译器指出移动或借用冲突,再判断是共享读取、独占修改,还是需要改变数据结构。不要为了消除错误而机械地复制所有数据;复制是否合适取决于类型和成本。