详解Rust中的变量与常量

 更新时间:2022年10月20日 10:22:28   作者:Brave-AirPig  
大多数尝试过 Rust 的人都希望继续使用它。但是如果你没有使用过它,你可能会想——什么是 Rust,如何理解Rust中的变量与常量,感兴趣的朋友跟随小编一起看看吧

Rust 是一种低级静态类型多范式编程语言,专注于安全性和性能,解决了 C/C++ 长期以来一直在努力解决的问题,例如内存错误和构建并发程序。它具有以下三个优点:

1. 靠语法和编译器技术,做到了更好的内存安全特性;

2. 防止数据竞争的数据所有权模型,并发更容易;

3. 抽象没有性能损失。

变量与可变性

在Rust中,哪怕你声明的是一个变量,在默认情况下也是不可更改的,如果改变量具有更改需求,那么需要使用 let 声明的同时给予其可变性 mut

fn main() {
    let mut x = "rust";
    println!("Hello, world! -- Hello {}", x);

    x = "test";
    println!("Hello, world! -- Hello {}", x);

}

// Hello, world! -- Hello rust
// Hello, world! -- Hello test

常量

常量使用 const 关键字声明,常量在绑定值之后也是不可以进行更改的,但是它与不可变的变量有些区别:

  • 不可以使用 mut 关键字,因为常量永远都是不可变的
  • 声明常量的同时必须标注其数据类型
  • 常量可以在任何作用域中声明,包括全局作用域
  • 常量只能被绑定到常量表达式,不能被绑定到函数的调用结果或只能在运行时才能计算出的值
  • 在程序运行期间,常量在其声明的作用域内一直有效
  • 常量名建议大写,每个独立单词之间使用下划线分割开来
fn main() {
    const X: char = '🚀';
    println!("Hello, world! -- Hello {}", X);
}

变量隐藏属性

在Rust语言中变量有这样一个特性:隐藏

也就是说我们可以使用同名去声明一个新的变量,新的变量会将之前声明的变量隐藏,或者你可以理解为覆盖?

隐藏和变量mut化是不一样的,根本区别就是mut允许改变之前的变量值,而隐藏特性是再次声明一个同名变量,隐藏之前的变量

在者说,如果我们不使用 let 关键字,那么重新给非 mut 变量赋值会导致编译时的错误,而使用 let 声明的同名变量,也是不可变的

还有一个特性,就是我们使用 let 声明的同名新变量的类型是没有必要和之前的变量数据类型相同的

fn main() {
    let test = 66;
    println!("Hello, world! -- Hello {}", test);

    let test: char = '😎';
    println!("Hello, world! -- Hello {}", test);
}

// Hello, world! -- Hello 66
// Hello, world! -- Hello 😎

就这个例子我们还可以体验一下Rust的安全以及规范

如果隐藏变量没有被使用,那么编译会报错

fn main() {
    let test = 66;
    let test: char = '😎';
    println!("Hello, world! -- Hello {}", test);
}

// help: if this is intentional, prefix it with an underscore: `_test`

Rust提醒我了,如果我们是故意操作,需要在test前加上_ 😊

到此这篇关于Rust中的变量与常量的文章就介绍到这了,更多相关Rust变量与常量内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vscode搭建rust开发环境的图文教程

    vscode搭建rust开发环境的图文教程

    Rust 是一种系统编程语言,它专注于内存安全、并发和性能,本文主要介绍了vscode搭建rust开发环境的图文教程,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • Rust语言之trait中的个方法可以重写吗

    Rust语言之trait中的个方法可以重写吗

    在Rust中,trait定义了一组方法,这些方法可以被一个或多个类型实现,当你为某个类型实现一个trait时,你可以为该trait中的每个方法提供自己的具体实现,本文将给大家介绍一下trait中的个方法是否可以重写,需要的朋友可以参考下
    2023-10-10
  • 关于rust的模块引入问题

    关于rust的模块引入问题

    Rust 语言是一种高效、可靠的通用高级语言,它的执行效率也是令人称赞的,是一种少有的兼顾开发效率和执行效率的语言,这篇文章主要介绍了rust的模块引入相关知识,需要的朋友可以参考下
    2022-10-10
  • 使用cargo install安装Rust二进制工具过程

    使用cargo install安装Rust二进制工具过程

    cargoinstall是一个用于安装包含可执行目标的Rust包的命令行工具,类似于系统软件包管理器,但它为Rust开发者提供了一种简洁的方式来安装和管理命令行工具,安装后,二进制文件会存储在$HOME/.cargo/bin目录中,需要将该目录添加到$PATH环境变量中才能在命令行中直接运行
    2025-02-02
  • 深入了解Rust中trait的使用

    深入了解Rust中trait的使用

    先前我们提到过 trait,那么Rust中的trait 是啥呢?本文将通过一些示例为大家详细讲讲Rust中trait的使用,感兴趣的小伙伴可以了解一下
    2022-11-11
  • 深入了解Rust 结构体的使用

    深入了解Rust 结构体的使用

    结构体是一种自定义的数据类型,它允许我们将多个不同的类型组合成一个整体。下面我们就来学习如何定义和使用结构体,并对比元组与结构体之间的异同,需要的可以参考一下
    2022-11-11
  • Rust 累计时间长度的操作方法

    Rust 累计时间长度的操作方法

    在Rust中,如果你想要记录累计时间,通常可以使用标准库中的std::time::Duration类型,这篇文章主要介绍了Rust如何累计时间长度,需要的朋友可以参考下
    2024-05-05
  • Rust中的Vector多值存储使用方法

    Rust中的Vector多值存储使用方法

    Vector在Rust中是一个非常灵活和强大的数据结构,通过有效利用它,我们可以更加方便地处理和操作多个值,使得代码更加清晰和易于维护,这篇文章主要介绍了Rust中的Vector多值存储的利器,需要的朋友可以参考下
    2024-02-02
  • Rust 入门之函数和注释实例详解

    Rust 入门之函数和注释实例详解

    这篇文章主要为大家介绍了Rust 入门之函数和注释实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Rust use关键字妙用及模块内容拆分方法

    Rust use关键字妙用及模块内容拆分方法

    这篇文章主要介绍了Rust use关键字妙用|模块内容拆分,文中还给大家介绍use关键字的习惯用法,快速引用自定义模块内容或标准库,以此优化代码书写,需要的朋友可以参考下
    2022-09-09

最新评论