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