Rust 中的 const()函式

Nilesh Katuwal 2022年6月7日
Rust 中的 const()函式

在本文中,我們將瞭解 Rust 中的 const() 是什麼。

Rust 中的 const()

當在整個程式中多次使用特定值時,重複複製它可能很麻煩。此外,將其作為從函式傳遞到函式的變數並不總是可能或可取的。

在這些情況下,const 關鍵字是複製程式碼的有用替代方法。

Rust 有兩種型別的常量,可以在任何範圍內宣告,包括全域性。兩者都需要明確的型別註釋:

  1. const - 一個不可更改的值(典型情況)

  2. 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 不能應用於檔案。

conststatic 專案之間的驚人相似之處造成了何時應該使用每個專案的不確定性。常量在使用時是傾斜的,使其用法等同於簡單地將 const 名稱替換為其值。

相反,靜態變數指向所有訪問共享的單個記憶體地址。這意味著,與常量不同,它們不能具有解構函式並且在整個程式碼庫中作為單個值執行。

const 關鍵字也可以在沒有原始指標的情況下使用,如 const Tmut 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