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

【第二课】Rust变量与数据类型(一)

目录

前言

变量绑定

变量遮蔽

常量

基本数据类型

复合数据类型

(1)元组类型

(2)数组类型

(3)结构体类型

(4)枚举类型

总结


前言

上一课是rust的入门第一课,介绍了rust的安装和cargo新建rust项目,这节课我们来了解一下rust的变量和数据类型,rust的变量和其他编程语言略有不同,我们在这一节细说。

在开始介绍之前,我们使用cargo创建项目来编写本节课的代码

cargo init lesson2

使用vscode打开

变量绑定

rust中的变量分为可变和不可变,其他的编程语言中也有这样的概念,比如scala中使用val定义不可变变量,var定义可变变量。不可变变量的含义是第一次赋值后,无法第二次赋值,可变变量则没有这样的限制。

这里需要注意和其他编程语言的变量赋值,变量初始化不同,在rust中这样的行为称为变量绑定,即将变量名称和值绑定在一起,这样做的原因和后面要介绍的所有权机制有很大关系,rust中的所有权是一个很有意思的东西,这里简单说一句:每一块内存都只有一个主人,当主人不在了,这块内存也要交还。想一想垃圾回收是不是也在做这样一件事情,java中jvm不断的寻找没有使用的内存,然后回收这一块内存,rust中的所有权机制使用另一种思路在解决垃圾回收的问题。

fn main() {
    let x = 8;
    x = 18;
    let y: i32 = 18;
}

rust中使用let定义不可变变量,变量名后可以跟数据类型,也可以不跟,编译器会自动推断数据类型,对于不可变变量,进行二次绑定值时会报错,我们使用cargo build编译一下看看报错,可以看到rust的编译器解释的非常详细,第一次将8绑定给变量x,不能把18第二次绑定给x,甚至告诉我们使用mut修饰就解决问题了,不得不感叹rust编译器的强大。

 --> src/main.rs:3:5
  |
2 |     let x = 8;
  |         - first assignment to `x`
3 |     x = 18;
  |     ^^^^^^ cannot assign twice to immutable variable
  |
help: consider making this binding mutable
  |
2 |     let mut x = 8;
  |         +++

                

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

相关文章:

  • AI驱动的桌面笔记应用Reor
  • 超全超详细使用SAM进行高效图像分割标注(GPU加速推理)
  • v-html 富文本中图片使用element-ui image-viewer组件实现预览,并且阻止滚动条
  • 群控系统服务端开发模式-应用开发-前端图片格式功能开发
  • 利用Blackbox AI让编程更轻松
  • HbuilderX 插件开发-模板创建
  • Android OpenGL ES详解——立方体贴图
  • 电子电气架构 -- 下一代整车电网
  • 微服务即时通讯系统的实现(客户端)----(3)
  • React学习05 - redux
  • MATLAB实现GARCH(广义自回归条件异方差)模型计算VaR(Value at Risk)
  • Spring:纯注解开发模式-Ioc对bean的管理
  • 聊天服务器(8)用户登录业务
  • Java项目实战II基于微信小程序的课堂助手(开发文档+数据库+源码)
  • RK3588开发板Android12-SDK更新通知
  • halcon3d disparity_image_to_xyz非常重要的算子及使用条件
  • 平均值(水题???)
  • STM32——外部中断
  • 【C语言】连接陷阱探秘(2):命令冲突与static修饰符
  • 【Python系列】Python中打印详细堆栈信息的技巧
  • Synchronized原理
  • K8S单节点部署及集群部署
  • PyTorch 张量的常用 API
  • Guava Cache
  • SQLI LABS | Less-51 GET-Error Based-ORDER BY CLAUSE-String-Stacked Injectiion
  • 图像分割——Hough变换检测法