《Rust 编程第一课》 学习笔记 Day 7

216 阅读1分钟

大家好,我是砸锅。一个摸鱼八年的后端开发。熟悉 Go、Lua。第七天还是继续和大家一起学习 Rust😊

在进行变量赋值、传参和函数返回时,如果涉及的数据结构没有实现 Copy trait,就会使用默认 Move 语义转移值的所有权,失去所有权的变量就无法继续访问原来的数据;如果数据结构实现了 Copy trait,就会使用 Copy 语义,自动把值复制一份,原来的变量还可以继续访问

如果不希望值的所有权被转移,又没有实现 Copy trait 无法使用 Copy 语义,则可以使用 Borrow 在不发生转移的情况下,被其他上下文使用,可以通过引用语法(& 或者 &mut) 实现

在 Rust 里面,借用和引用是两个概念。引用只是借用了临时权,不会破坏值的单一所有权约束,Rust的借用都是只读

Rust 的所有参数传递都是传值,一个值在同一个时刻只有一个所有者,当所有者离开作用域时,其拥有的值就会被丢弃,赋值或者传参都会导致值 Move,所有权一旦被转移,之前的变量就不能访问了

一个值可以有多个只读引用,可以用唯一一个活跃的可变引用,可变引用和只读引用是互斥关系