bitmori / neonmori.github.io

このノートに書き下ろし、星空で巡ってく
1 stars 0 forks source link

Rust 所有权/变量与资源的互动 #18

Open bitmori opened 5 years ago

bitmori commented 5 years ago
  1. Rust 中的每一个值都有一个被称为其 所有者(owner)的变量。
  2. 值有且只有一个所有者。
  3. 当所有者(变量)离开作用域,这个值将被丢弃。
bitmori commented 5 years ago

变量与资源的互动: Rust采取类似C++ RAII的思想,在变量离开作用域时调用drop方法。 内部类型固定大小的简单值(数值类型)总是进行拷贝(因为数据量小)

  1. 移动:
    • 移动时将新变量的内部指针指向原有资源,将旧变量无效化,于是在旧变量离开作用域时不清理
    • Rust 永远也不会自动创建数据的 “深拷贝”。因此,任何 自动 的复制可以被认为对运行时性能影响较小。
  2. 克隆:
    • 调用clone()方法,把旧变量的资源完整复制一份后关联到新变量上

Rust的Copy trait和Drop trait:

bitmori commented 5 years ago

下列类型有Copy trait:

bitmori commented 5 years ago

将值传递给函数在语义上与给变量赋值相似。 向函数传递值可能会移动或者复制,就像赋值语句一样。

bitmori commented 5 years ago

函数返回一个值的时候,这个返回值的所有权也会进行转移