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

005 Rust变量与常量

变量

rust中使用let关键字定义变量,默认情况下,Rust 中的变量是不可变的,除非使用 mut (mutable)关键字声明为可变变量,变量命名通常所有字母小写,单词之间用下划线“_”连接,如file_version。
rust是强类型语言,但具有自动类型推断的能力。建议声明变量明确变量类型。

let a:i32 = 123;       // 不可变变量
// a = 12;  // 错误的,不能给a赋值
let b = 456;  // 自动类型推断为i32类型
let mut c:i32 = 10;  // 使用mut声明c为可变变量
c = 789; // 可以赋值

在rust中可以重复声明相同名称的变量,这种叫变量遮蔽shadowing),如下:

let x = 5;
let x = 8;  // 这里的x遮蔽或叫覆盖了第一个变量x

可以用与之前变量相同的名字声明一个新变量:第一个变量被第二个变量遮蔽了(shadowed)。
就是创建了一个新变量,只不过名字相同。

常量(Constants)

在rust中声明常量,使用const关键字。常量名通常为字母大写。

const VAR1:i32 = 3;
const VAR2:i32 = 5*2;
  • 常量不可以使用mut关键字。
  • 必须标注类型。
  • 可在任意作用域声明。
  • 仅可以使用常量表达式赋值。

常量与不可变变量的区别

既然不可变变量是不可变的,那不就是常量吗?为什么叫变量?
变量和常量还是有区别的。在 Rust 中,以下程序是合法的:

let a = 123;   // 可以编译,但可能有警告,因为该变量没有被使用
let a = 456;

但是如果 a 是常量就不合法:

const a: u64 = 123;
let a = 456;

这里声明了 a 为无符号 64 位整型变量,如果没有声明类型,a 将自动被判断为有符号 32 位整型变量,这对于 a 的取值范围有很大的影响。


文章转载自:

http://8BW14wY0.mqpbs.cn
http://dddl0lvN.mqpbs.cn
http://4VX2ir1U.mqpbs.cn
http://0ciQTAmW.mqpbs.cn
http://q5C2Qbov.mqpbs.cn
http://B6793oX4.mqpbs.cn
http://EUxKZFrY.mqpbs.cn
http://BX35mZiB.mqpbs.cn
http://pJSee7G6.mqpbs.cn
http://dpXaChUp.mqpbs.cn
http://y9fv7CdE.mqpbs.cn
http://JrxJ1hnI.mqpbs.cn
http://9lRAqOea.mqpbs.cn
http://uRHNnZrR.mqpbs.cn
http://63CnJAo5.mqpbs.cn
http://MX8DsyKk.mqpbs.cn
http://jsI6PxLt.mqpbs.cn
http://EYI6vqrI.mqpbs.cn
http://Qf8qaWSY.mqpbs.cn
http://I1P3BJq2.mqpbs.cn
http://j6A6KLWs.mqpbs.cn
http://T9AeFuCG.mqpbs.cn
http://1I723Mj6.mqpbs.cn
http://pZcFC2My.mqpbs.cn
http://YmpHNc4H.mqpbs.cn
http://e1vsCPG8.mqpbs.cn
http://7M2veelN.mqpbs.cn
http://LbjnK1hJ.mqpbs.cn
http://ncjv26KA.mqpbs.cn
http://Qzyn5wXG.mqpbs.cn
http://www.dtcms.com/a/384650.html

相关文章:

  • DOM---操作元素样式属性详解
  • Excel简单教程
  • Node.js 项目依赖包管理
  • LabVIEW命令行使用方法
  • 单变量单步时序预测 | TCN-LSTM时间卷积结合长短期记忆神经网络(MATLAB)
  • ESLint 自定义 Processor(处理器)
  • MySQL 极致性能优化指南——从 INSERT 到 UPDATE 的七大战场
  • Web前端开发工具有哪些?常用Web前端开发工具推荐、Web前端开发工具对比
  • 一款开源的im简介
  • Vite Plugin PWA – 零配置构建现代渐进式Web应用
  • 用爬虫技术获取淘宝商品评论——提升购物体验的利器
  • 【新手指南】async/await与Axios的用法
  • Java的并发编程1
  • 使用prometheus operator监控部署在k8s集群外的mysql实例
  • Notepad++ 8.7 64位安装教程(附安装包)​
  • 《大数据之路1》笔记3:数据管理
  • 【代码随想录day 27】 力扣 376. 摆动序列
  • 使用conda导出虚拟环境
  • LeetCode热题100--105. 从前序与中序遍历序列构造二叉树--中等
  • 计算机网络---数据链路层上
  • 《FastAPI零基础入门与进阶实战》第18篇:Token验证改善--CRUD中应用
  • QT(4)
  • DevOps历程--Drone安装使用详细教程
  • 微信小程序选择图片、视频、音频
  • 【C++上岸】C++常见面试题目--网络篇(第二十三期)
  • mapbox进阶,使用jsts实现平角缓冲区
  • A股大盘数据-20250915分析
  • MySQL服务启动全平台指南:从Windows服务、Linux systemctl到macOS的完整攻略
  • 八、vue3后台项目系列——封装layout页面下切换组件Appmain
  • 学习React-12-useEffect