详解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变量与常量内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Rust 标准库的结构及模块路径详解

    Rust 标准库的结构及模块路径详解

    在 Rust 中,标准库提供了一组核心功能,以帮助开发者执行常见的编程任务,这个路径树可以作为参考,帮助你更好地理解 Rust 标准库的结构和模块之间的关系,本文介绍 Rust 标准库的结构,并提供相应的 use 路径,感兴趣的朋友一起看看吧
    2024-05-05
  • 利用Rust实现一个简单的Ping应用

    利用Rust实现一个简单的Ping应用

    这两年Rust火的一塌糊涂,甚至都烧到了前端,再不学习怕是要落伍了。最近翻了翻文档,写了个简单的Ping应用练练手,感兴趣的小伙伴可以了解一下
    2022-12-12
  • Rust 累计时间长度的操作方法

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

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

    聊聊Rust 运算符

    运算符 用于对数据执行一些操作。被运算符执行操作的数据我们称之为操作数。下面通过本文给大家介绍Rust 运算符的相关知识,感兴趣的朋友一起看看吧
    2021-11-11
  • Rust如何使用Sauron实现Web界面交互

    Rust如何使用Sauron实现Web界面交互

    Sauron 是一个多功能的 Web 框架和库,用于构建客户端和/或服务器端 Web 应用程序,重点关注人体工程学、简单性和优雅性,这篇文章主要介绍了Rust使用Sauron实现Web界面交互,需要的朋友可以参考下
    2024-03-03
  • Rust的slab库使用场景分析

    Rust的slab库使用场景分析

    slab 是一个轻量级、高性能的工具,非常适合管理固定大小的资源集合,尤其是在网络编程和事件驱动架构中,这篇文章主要介绍了Rust的slab库使用教程,需要的朋友可以参考下
    2024-12-12
  • 详解Rust中三种循环(loop,while,for)的使用

    详解Rust中三种循环(loop,while,for)的使用

    我们常常需要重复执行同一段代码,针对这种场景,Rust 提供了多种循环(loop)工具。一个循环会执行循环体中的代码直到结尾,并紧接着回到开头继续执行。而 Rust 提供了 3 种循环:loop、while 和 for,下面逐一讲解
    2022-09-09
  • 深入讲解下Rust模块使用方式

    深入讲解下Rust模块使用方式

    很多时候,我们写的代码需要按模块组织,因为我们无法将大量的代码都写在一个文件上,那样不容易维护,下面这篇文章主要给大家介绍了关于Rust模块使用方式的相关资料,需要的朋友可以参考下
    2022-03-03
  • Rust常用特型之Drop特型

    Rust常用特型之Drop特型

    本文主要介绍了Rust常用特型之Drop特型,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-03-03
  • Rust动态调用字符串定义的Rhai函数方式

    Rust动态调用字符串定义的Rhai函数方式

    Rust中使用Rhai动态调用字符串定义的函数,通过eval_expression_with_scope实现,但参数传递和函数名处理有局限性,使用FnCall功能更健壮,但更复杂,总结提供了更通用的方法,但需要处理更多错误情况
    2025-02-02

最新评论