Programming Rust 第4章 所有权

本文深入探讨Rust编程中的所有权系统,强调其承诺确保内存安全。所有权唯一,变量离开作用域时自动释放,通过移动语义进行资源转移。同时,文章讨论了Copy特性的例外、Rc和Arc实现的共享所有权,以及移动语义在不同情况下的应用。
摘要由CSDN通过智能技术生成

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

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[

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值