在 Rust 中,(常量)和 (静态变量)虽然都用于定义全局作用域的值,但它们在内存管理、生命周期和编译行为上有本质的区别。 简单来说: :像是“查找并替换”。没有固定的内存地址,使用时会复制值。 :是一个固定的内存位置。整个程序中只有一份,有唯一的地址。 以下是详细的对比分析: --- 1. (常量) 语义:它定义的是一个值,而不是一个变量。 内存行为(内联 Inlining): 在编译时会被内联到使用它的每一个地方。这意味着,如果你在代码中使用了 10 次 ,编译器实际上相当于把这个值复制粘贴了 10 次。 内存地址:通常没有固定的内存地址。如果你对 取引用(),编译器可能会为每次引用创建一个临时的匿名内存位置,因此不同地方引用的地址可能不同。 可变性:绝对不可变。 生命周期:虽然概念上存在于整个程序中,但因为它被内联了,所以没有具体的生命周期绑定(除非取引用)。 适用场景:魔法数字、配置参数、简单的字符串字面量。 2. (静态变量) 语义:它定义的是一个全局变量。 内存行为:程序启动时分配内存,程序结束时释放。它在二进制文件中只占用一个固定的内存位置。 内存地址:在程序的整...