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)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年3月18日 下午4:44
下一篇 2023年3月18日 下午5:10

相关推荐

  • 商家为什么不愿意用聚合支付

    商家对于使用聚合支付的犹豫主要涉及以下几个方面:1、费用问题;2、数据安全隐患;3、操作复杂性;4、法规合规风险;5、客户体验问题。其中,费用问题是让很多商家产生疑虑的核心因素,由于聚合支付平台通常会收取一定的手续费,可能增加商家的运营成本。 1、费用问题 聚合支付虽然提供了多种支付方式的整合,便捷…

    2023年8月10日
    15700
  • 做文档的软件有哪些

    做文档的软件有:一、 Microsoft Word;二、Google Docs;三、Adobe Acrobat;四、MindMap软件;五、Axure RP。Microsoft Word是一款常见的文档编辑器,其中包含了丰富的文档编辑和排版工具,因此是一种常见的文档编辑工具。 一、 Microsof…

    2023年4月30日
    8500
  • Bert的预训练和微调的区别

    区别有:1、目的不同;2、数据集的区别;3、模型参数的变化;4、训练的时长和复杂度;5、输出结果的用途;6、所需的计算资源。其中,目的不同指的是,预训练主要是为了让模型学会语言的基础知识,而微调则是为了使模型在特定任务上表现得更好。 1、目的不同 Bert预训练:主要目的是学习语言的基础知识,使模型…

    2023年7月30日
    11500
  • plc的基本功能有哪些

    plc的基本功能有:1、开关量逻辑控制;2、运动控制;3、闭环过程控制;4、数据处理;5、通信。开关量逻辑控制是PLC最基本较广泛的应用,PLC的输入信号和输出信号都是只有通/断状态的开关量信号,这种控制与继电器控制最为接近。

    2023年1月9日
    31300
  • 可视化看板主要有哪几种

    可视化看板主要有:一、工序内看板;二、信号看板;三、工序间看板;四、外协看板;五、临时看板。工序内看板是指某工序进行加工时所用的看板。这种看板用于装配线以及即使生产多种产品也不需要实质性的作业更换时间(作业更换时间接近于零)的工序。 一、工序内看板 工序内看板是指某工序进行加工时所用的看板。这种看板…

    2023年4月16日
    15000
  • 微导流超级签名有什么优势

    微导流超级签名的优势有:一、安全性高;二、签名效率高;三、体验友好;四、可扩展性强;五、成本低。微导流超级签名采用了非对称加密算法,即公钥加密和私钥解密的方式,确保签名数据的安全性。 一、安全性高 微导流超级签名采用了非对称加密算法,即公钥加密和私钥解密的方式,确保签名数据的安全性。用户的私钥只有用…

    2023年5月28日
    5400
  • 二叉树什么场景需要返回值

    二叉树需要返回值的场景有:1、计算深度;2、判断是否平衡;3、查找路径;4、计算节点总和;5、检查特定属性;6、二叉树的序列化和反序列化。其中,计算深度指的是在遍历二叉树的过程中需要返回每个节点的深度,以便进行其他计算或者判断。 1、计算深度 在二叉树的遍历过程中,通常需要计算每个节点的深度。这种情…

    2023年7月18日
    19400
  • 什么软件可以记工时

    记工时用以下软件:一、Toggl;二、Clockify;三、RescueTime;四、Everhour。Toggl是一款追踪和记录开销时间方式的应用工具,无论是在工作中,还是休闲在家中,Toggl都能够非常容易地快速记录和追踪用户各种活动所花费的时间。Toggl能够方便地记录员工的时间和任务。 一、…

    2023年4月16日
    11400
  • 怎么选择WFA与RPA?

    什么是工作流自动化?什么是机器人流程自动化?在这篇文章中,我们将探讨两者的区别,并帮助您决定哪一种方式更适合您的业务。

    2023年8月2日
    4200
  • sql语言的特点有哪些

    sql语言的特点有:1、允许用户在高层数据结构工作。2、不要求用户指定数据存放方法。3、不需要用户了解具体数据存放方式。4、底层结构不同的数据库系统可以使用相同的SQL语言作为数据操作和管理的接口。5、可以嵌套和通过高级对象实现过程化编程。

    2022年10月17日
    72800

发表回复

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

400-800-1024

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

分享本页
返回顶部