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

【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.lryc.cn/news/535479.html

相关文章:

  • PlantUml常用语法
  • 保存字典类型的文件用什么格式比较好
  • 开源模型应用落地-Qwen1.5-MoE-A2.7B-Chat与vllm实现推理加速的正确姿势(一)
  • 一竞技瓦拉几亚S4预选:YB 2-0击败GG
  • deepseek+kimi一键生成PPT
  • mybatis 是否支持延迟加载?延迟加载的原理是什么?
  • 【Android开发】安卓手机APP拍照并使用机器学习进行OCR文字识别
  • 力扣 15.三数之和
  • 机器学习:二分类和多分类
  • 安科瑞光伏发电防逆流解决方案——守护电网安全,提升能源效率
  • ml5.js框架实现AI图片识别
  • HDFS应用-后端存储cephfs-文件存储和对象存储数据双向迁移
  • 关于atomic 是否是线程安全的问题
  • 在实体机和wsl2中安装docker、使用GPU
  • HTTP3.0:QUIC协议详解
  • 【EXCEL】【VBA】处理GI Log获得Surf格式的CONTOUR DATA
  • 【数据处理】使用python收集网络数据--爬虫基础
  • 代码随想录二叉树篇(含源码)
  • 网络安全检测思路
  • ios通过xib创建控件
  • 跟着李沐老师学习深度学习(八)
  • 元宵小花灯
  • 算法——搜索算法:原理、类型与实战应用
  • 告别传统测量:三维扫描仪测量工件尺寸
  • win32汇编环境,对话框程序使用跟踪条(滑块)控件示例一
  • WordPress 角标插件:20 种渐变色彩搭配,打造专属菜单标识
  • 【鸿蒙开发】第二十九章 Stage模型-应用上下文Context、进程、线程
  • window 安装GitLab服务器笔记
  • 3dgs 2025 学习笔记
  • 2024.1.2版本Android Studio gradle下载超时问题处理