Rust的设计中为什么要区分不可变变量和常量

Rust的设计中要区分不可变变量和常量是因为:不可变变量:初始化之后不会再变。“从现在开始,它不会再变了”,但初始化本身可以依赖变量,可能多次调用它所在的函数可能就得到不同的值。

一、不可变变量

不可变变量:初始化之后不会再变。“从现在开始,它不会再变了”

但初始化本身可以依赖变量,可能多次调用它所在的函数可能就得到不同的值。

比如let y = x + 1之后所有 y都可以用x + 1代替,你可以知道y - 1一定是x,但不知道它确切是多少,可能是运行时相关的。

二、常量

常量:初始化过程完全静态(编译期已知),且也不会变。“这始终就是一个确定【静态】值”

比如const x: i32 = 1之后,和x相关的计算全都可以静态确定,进而有更多信息可以优化。

示例:

fn main(){
    let mut x = 2;
    let a = x + 1;
 
    println!("a = {}",a);
    x = 20;
    println!("a = {}",a)
}

延伸阅读

常量与不可变变量的区别

  • 常量需要使用const关键字来声明而不是let关键字,并且在声明常量时必须显式的指定其数据类型。
  • 常量可以被声明在任何作用域中,甚至包括全局作用域。
  • 常量只能被赋值为常量表达式或数学表达式,不能是函数返回值,或是其他在运行时才能确定的值。

隐藏

隐藏(shadow)是指在同一块代码块中声明一个与之前已声明变量同名的新变量,新变量会隐藏之前的变量,即无法再去访问前一个同名的变量,这种就称之为隐藏。

隐藏和mut的区别

  • 隐藏机制不同于将一个变量声明为mut,因为如果不是在使用let关键字的情况下重新为变量赋值,则会导致编译错误。
  • 重复使用let关键字会创建出新变量,所以我们可以在复用变量名称的同时改变它的类型。

文章标题:Rust的设计中为什么要区分不可变变量和常量,发布者:E.Z,转载请注明出处:https://worktile.com/kb/p/47171

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
E.ZE.Z认证作者
上一篇 2023年3月18日 下午4:44
下一篇 2023年3月18日 下午5:10

相关推荐

  • app分发平台有哪些

    App分发平台有:1、苹果应用商店;2、谷歌Play商店;3、华为应用市场;4、小米应用商店;5、OPPO软件商店;6、VIVO软件商店;其中,平台的差异主要体现在用户基数、应用数量、平台政策、收费标准等方面。 1、苹果应用商店 苹果应用商店是苹果公司的官方应用分发平台,它提供了大量的iOS应用程序…

    2023年7月10日
    1.1K00
  • plm研发管理系统全称

    PLM研发管理系统的全称是“Product Lifecycle Management”,即产品生命周期管理。这个系统旨在管理产品从概念设计到废弃回收整个生命周期中的所有信息和过程。它涵盖产品创意提出、设计开发、制造出产、市场上市、服务维护到最终的退市过程,旨在提高产品研发的效率和质量,降低成本,缩短…

    2024年1月9日
    39900
  • App系统开发失败原因有哪些

    App系统开发失败原因有:1、企业的开发目的不明确;2、开发或外包的团队水平差;3、企业与外包团队的沟通不到位;4、APP同质化现象严重。许多企业在开发APP应用时,自己并没有明确的目标,而仅仅只是认为要做一个APP应用。 一、企业的开发目的不明确 许多企业在开发APP应用时,自己并没有明确的目标,…

    2023年5月10日
    28100
  • LSTM比Tranformer优势在哪里

    LSTM相对于Transformer的几个关键优势:1、长期记忆能力;2、结构简单;3、时序数据处理;4、稳定性和训练。长短时记忆网络 (LSTM) 是为解决长期依赖问题而设计的,可以捕捉并存储长时间跨度的信息。 1、长期记忆能力 LSTM:长短时记忆网络 (LSTM) 是为解决长期依赖问题而设计的…

    2023年7月30日
    90800
  • 如何进行项目的质量管理

    项目的质量管理关键在于确保产品或服务满足预期要求与标准。有效的质量管理依赖于三个要素:1、质量规划、2、质量保证、3、质量控制。项目质量的保障需要精密计划、系统管理以及持续监控。质量规划是构筑项目质量基石的过程,其关键在于确保项目活动得以优化、风险被识别并且缓解措施得当。 在质量规划阶段,项目经理与…

    2024年1月8日
    18100
  • 如何对研发团队管理

    研发团队管理的关键是确保高效的沟通、明确的目标设定、灵活性、技能的多样性和持续的学习与进步。1、沟通是确保所有团队成员了解项目方向和当前状态的基础。2、目标设定为团队成员提供了清晰的方向。3、灵活性允许团队适应变化的环境。4、技能多样性增强了团队面对各种挑战的能力。5、持续的学习保持了团队的竞争力。…

    2024年1月9日
    15300
  • 企业项目管理系统的研发

    标题:企业项目管理系统的研发 企业项目管理系统的研发 关键在于建立一个高效、灵活并能够适应不同项目需求的平台。该系统的功能涵盖但不限于1、任务分配、2、时间跟踪、3、资源管理、4、沟通协调以及5、风险控制。其中,任务分配机制是至关重要的部分,它确保所有项目成员清晰理解自己的职责与截止日期,从而促进整…

    2024年1月9日
    15400
  • 半监督学习和few shot的区别在哪里

    半监督学习和few shot的区别在:1、数据标注;2、模型训练;3、应用场景。半监督学习是一种利用带标签数据和无标签数据进行模型训练的方法。Few-shot学习是一种处理少样本学习问题的方法,其目标是通过少量样本(通常为1到5个)来进行模型训练和预测。 一、数据标注 半监督学习:半监督学习是一种利…

    2023年7月30日
    70200
  • oa办公都是需要什么模块

    需要以下模块:一、人事管理模块;二、流程审批模块;三、公文管理模块;四、项目管理模块;五、资产管理模块;六、客户关系管理模块;七、知识管理模块。人事管理模块是OA系统中最基本的模块之一。它包括员工档案管理、考勤管理、薪资管理等内容。 一、人事管理模块 人事管理模块是OA系统中最基本的模块之一。它包括…

    2023年5月28日
    43800
  • 软件开发跟移动应用开发有什么区别

    二者的核心区别体现在:1、定义;2、平台差异;3、用户体验;4、开发工具;5、发布流程;6、性能要求。其中,软件开发更多的是面向桌面或服务器应用,而移动应用开发则专注于手机和平板电脑。 1、定义 软件开发:是指为桌面计算机、服务器或其他硬件设备开发应用程序或系统软件的过程。 移动应用开发:是指专门为…

    2023年7月30日
    96300

发表回复

登录后才能评论
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部