在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
用于声明运行时静态变量。