Programming Rust 第4章 所有权

要所有权系统干啥? 管理内存…

0. Rust的承诺

  1. 我们决定程序中每个值能活多久, 并控制Rust回收该值拥有的内存和其他资源
  2. 释放后, 就不能被指针指向.

如何做到呢?
靠所有权和移动语义以及下章的lifetime

  1. 所有权

  2. Moves

    • index
  3. Copy: Exception of Moves

  4. Shared Ownership: Rc and Arc

1. 所有权 Ownership

  • Rust中每个值只有一个拥有者, 并且拥有者决定值的生命周期.
  • 当变量离开其声明的控制块就被释放了.

我们会有一个所有权树, 这个树不是数据结构中的树.

2. 移动语义 Move

对于绝大多数类型, 赋值会将所有权从右值移动到左值.
右值就变成了未初始化.

1. 一些注意

moves是对value而言, 而不是堆上数据.
即对于String, 移动的是栈上数据,而不是堆上的数据.

2. index中的Move

let v = vec!["a".to_string(), "b".to_string()];
let a  = v[0];

Rust不允许这个v[0]操作.
要是把所有权移出去了, v[

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值