当前位置: 首页 > article >正文

【04】RUST特性

文章目录

  • 隐藏shadowing
  • 所有权ownership
    • 堆区&栈区
    • 所有权规则
    • 变量&数据
      • Copy Trait与Drop Trait
        • Copy Trait
        • Drop Trait
      • 移动
      • 克隆
    • 函数参数与返回值的所有权
      • 参数
    • 引用
      • 可变引用
      • 悬垂引用
      • slice
  • 生命周期

隐藏shadowing

有点像同名覆盖

let mut guess = String::new();

let guess: u32 = guss.trim().parse().expect("Please type a number!");

所有权ownership

通过所有权系统管理内存。通过编译时期的严格检查,从而保证在运行时所有权系统不会减慢程序。

堆区&栈区

类型 内存管理 大小 特点 存储
栈区 已知大小 一般较少 先进后出 栈用于存储函数调用的上下文、局部变量和一些临时数据。
堆区 未知大小,动态分配内存 内存大于栈区 需要显示管理,分配和释放 存储需要在多个函数或更长生命周期中使用的数据。

所有权规则

  1. 每个值只有一个所有者(owner)。
  2. 值在任一时刻有且只有一个所有者。
  3. 当所有者(变量)离开作用域,这个值将被丢弃。

变量&数据

Copy Trait与Drop Trait

Rust 中,类型不能同时实现 Copy Trait 和 Drop Trait。如果为一个类型实现了 Drop Trait,那么无法为其实现 Copy Trait。

Copy Trait

Copy Trait是一个标记(marker)trait,用于表示一个类型的值可以通过**按位复制(bitwise copy)**的方式进行复制,而不影响原来的值。

#[derive(Copy, Clone)]
struct Point {
   
    x: i32,
    y: i32,
}

#[derive(Copy, Clone)]
struct MyStruct {
   
    a: i32,
    b: String, // String 不实现 Copy
}
// 编译错误:`String` 不实现 `Copy`,因此 `MyStruct` 也不能实现 `Copy`
Drop Trait

提供了一种在值离开作用域时执行代码的方式,用于自定义资源清理逻辑。
drop 方法:当值要被销毁时,Rust 会自动调用实现了 Drop Trait 的类型的 drop 方法。


http://www.kler.cn/a/541584.html

相关文章:

  • C++17 新特性解析
  • 网络安全溯源 思路 网络安全原理
  • 驱动开发系列36 - Linux Graphics 2D 绘制流程
  • 【信息系统项目管理师-案例真题】2017下半年案例分析答案和详解
  • AF3 drmsd函数解读
  • <论文>DeepSeek-R1:通过强化学习激励大语言模型的推理能力(深度思考)
  • scss混合优化媒体查询书写
  • 防御保护作业二
  • 解锁摄影潜能:全面解析相机镜头的选择与使用逻辑
  • Git 与 Git常用命令
  • 【详细版】DETR系列之Deformable DETR(2021 ICLR)
  • 【DeepSeek服务器繁忙,请稍后再试...如何解决?】
  • 互联网企业线上业务拓展与开源AI智能名片2+1链动模式S2B2C商城小程序的创新应用
  • Python 文字识别OCR
  • 代码随想录算法【Day39】
  • MindStudio制作MindSpore TBE算子(二)算子测试
  • 常用的python库-安装与使用
  • YOLO模型缝合实战指南:ECA注意力模块的实现与集成
  • Tria Technologies RFSoC 平台 - 入门指南
  • 2025 年前端开发现状分析:卷疯了还是卷麻了?
  • 【FPGA】模型机下载FPGA设计
  • UE5 如何通过命令行启动游戏工程
  • 【错题本】js事件循环机制下,记录一个意外错误
  • Ada语言的区块链
  • 地平线 3D 目标检测 Bevformer 参考算法-V2.0
  • 怎么查看电脑显存大小(查看电脑配置)