在Rust中,const
和static
關鍵字都用于聲明常量,但它們有一些區別:
const
關鍵字用于聲明編譯時常量(compile-time constant),這意味著該常量的值在編譯時就已經確定,并且無法被修改。const
常量可以在任何作用域中定義,包括函數作用域、模塊作用域等。const MY_CONST: i32 = 100;
static
關鍵字用于聲明靜態變量(static variable),靜態變量在程序整個運行周期內都是存在的,并且只有一個實例。靜態變量的值在程序運行時才被初始化,可以被修改。靜態變量必須指定類型,并且必須在全局作用域中定義。static mut MY_STATIC: i32 = 0;
static
變量是全局的,可以被多個線程訪問,因此如果要在多線程中訪問和修改變量,需要使用static
關鍵字聲明。總而言之,const
用于聲明編譯時常量,而static
用于聲明運行時靜態變量。