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