2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家
4.3.0 正文之前
在学习了 Rust 的通用编程概念之后,你将进入 Rust 最重要的部分——所有权。它与其他语言大不相同,许多初学者都觉得难以掌握。本章旨在帮助初学者彻底掌握这一特性。
本章包含三个小节:
- 所有权:栈内存与堆内存
- 所有权规则、内存与分配
- 所有权与函数(本文)
如果你觉得本文有帮助,请点赞、收藏并关注。若想持续学习,请关注本系列文章。
4.3.1 向函数传递值
从语义上讲,向函数传递值类似于将值赋给变量,因此可以用一句话概括:函数参数传递的方式与赋值操作完全相同。
接下来,我们详细说明:向函数传递值会导致移动或复制。
- 对于实现了Copy 特性的数据类型,会发生复制,因此原始变量不受影响,可以继续使用。
- 对于未实现Copy 特性的数据类型,会发生移动,因此原始变量将失效,无法再被使用。
关于 Copy 特性、移动和复制的详细介绍已在上一篇文章《4.2 所有权规则、内存与分配》中给出,此处不再重复。
fn main() {
let machine = String::from("6657");
wjq(machine);
let x = 6657;
wjq_copy(x);
println!("x is: {}", x);
}
fn wjq(some_string: String) {
println!("{}", some_string);
}
fn wjq_copy(some_number: i32) {
println!("{}", some_number);
}
-
对于变量
machine:-
String是一种复杂的数据类型,分配在堆上,并且未实现 Copy 特性。 - 当
machine被传入wjq函数时,会发生移动,即所有权从变量mach免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。
-