[Rust 指南] 4.3. 所有权与函数

发布日期:2026-04-08 10:06:43   浏览量 :4
发布日期:2026-04-08 10:06:43  
4

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

      免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
支持 反馈 订阅 数据
回到顶部