Rust常量


常量表示无法更改的值,使用const关键字定义常量,常量必须明确的值。以下是声明常量的语法。

const VARIABLE_NAME:dataType = value;

Rust常量命名约定


常量的命名约定类似于变量的命名规则,常量名称中的所有字符通常都是大写的。与声明变量不同,不能用let关键字声明常量。

在以下示例中,我们在Rust中使用了常量:

fn main() {
    const USER_LIMIT:i32 = 100;    //声明一个整数常量
    const PI:f32 = 3.14;           //声明一个float常量

    println!("user limit is {}",USER_LIMIT);  //显示常量的值
    println!("pi value is {}",PI);            //显示常量的值
}

常数 vs 变量


在本节中,我们将学习常量和变量之间的区别因素:

  • 常量使用const关键字,而变量则使用let关键字;

  • 变量声明可以选择具有数据类型,而常量声明必须指定数据类型。这意味着const USER_LIMIT = 100将导致错误;

  • 使用声明的变量let关键字默认是不可变的。但是,你可以选择使用mut关键词。常量是不可变的;

  • 只能将常量设置为常量表达式,而不能设置为函数调用的结果或将在运行时计算的任何其他值;

  • 常量可以在任何范围内声明,包括全局范围,这使它们对于代码的许多部分都需要知道的值很有用。

变量和常量的覆盖


Rust允许程序员使用相同的名称声明变量,在这种情况下,新变量将覆盖先前的变量。

让我们通过一个例子来理解这一点。

fn main() {
    let salary = 100.00;
    let salary = 1.50 ;
    //读取第一笔薪水
    println!("The value of salary is :{}",salary);
}

上面的代码通过名称salal声明了两个变量。第一个声明的值是100.00,第二个声明的值是1.50。第二个变量在显示输出时遮盖或隐藏第一个变量。

The value of salary is :1.50

阴影时,Rust支持具有不同数据类型的变量。

考虑以下示例。

该代码通过名称声明了两个变量uname。第一个声明分配了一个字符串值,而第二个声明分配了一个整数。 len函数返回字符串值中的字符总数。

fn main() {
    let uname = "Mohtashim";
    let uname = uname.len();
    println!("name changed to integer : {}",uname);
}
name changed to integer: 9

与变量不同,常量不能被遮蔽。如果上述程序中的变量被常量替换,则编译器将引发错误。

fn main() {
    const NAME:&str = "Mohtashim";
    const NAME:usize = NAME.len();
    //错误:已经定义了“ NAME”
    println!("name changed to integer : {}",NAME);
}