Rust 中的 const()函数
Nilesh Katuwal
2022年6月7日
在本文中,我们将了解 Rust 中的 const()
是什么。
Rust 中的 const()
当在整个程序中多次使用特定值时,重复复制它可能很麻烦。此外,将其作为从函数传递到函数的变量并不总是可能或可取的。
在这些情况下,const
关键字是复制代码的有用替代方法。
Rust 有两种类型的常量,可以在任何范围内声明,包括全局。两者都需要明确的类型注释:
-
const
- 一个不可更改的值(典型情况) -
static
- 具有静态生命周期的可变变量静态寿命是推导出来的,因此不需要指定。访问或更改可变静态变量是不安全的。
例子:
fn main() {
const THE_LIMIT:i32 = 120;
const NUM:f32 = 3.14;
println!("The limit of user is {}", THE_LIMIT);
println!("The value of num is {}",NUM);
}
输出:
The limit of user is 120
The value of num is 3.14
常量应该显式输入;与 let
不同,你不能让编译器确定它们的类型。任何常量值都可以在 const
中定义,这是包含在常量中的绝大多数有意义的东西;例如,const
不能应用于文件。
const
和 static
项目之间的惊人相似之处造成了何时应该使用每个项目的不确定性。常量在使用时是倾斜的,使其用法等同于简单地将 const
名称替换为其值。
相反,静态变量指向所有访问共享的单个内存地址。这意味着,与常量不同,它们不能具有析构函数并且在整个代码库中作为单个值运行。
const
关键字也可以在没有原始指针的情况下使用,如 const T
和 mut T.
所见。
例子:
static LANGUAGE: &str = "Rust";
const LIMIT: i32 = 10;
fn is_big(n: i32) -> bool {
n > LIMIT
}
fn main() {
let n = 16;
println!("{} is a programming language.", LANGUAGE);
println!("The limit is {}", LIMIT);
println!("{} is {}", n, if is_big(n) { "large" } else { "small" });
}
输出:
Rust is a programming language.
The limit is 10
16 is large