我正在尝试在函数f0
中定义静态变量,并在其他函数f1
中重用它。
fn f0() {
static v: i32 = 10;
}
fn f1() {
static v: i32; // the compiler reports a syntax error for this statement
}
但是,由于未在第二个函数中将其分配给任何值,因此编译器报告了一条错误消息:
!
,(
,+
,::
,<
或=
的预期值之一,找到;
我正在使用每晚的Rust工具链:rustc 1.40.0-nightly。
这听起来有点奇怪,因为声明静态变量本质上不需要值分配。
应该引起问题的原因?
您不能声明未初始化的静态变量,因为Rust编译器假定所有变量都已初始化。
如果您确实要执行此操作,则需要使用std::mem::MaybeUninit
。
但是,即使您这样做了,也无法解决您原来的问题(在函数之间共享静态变量)。示例中的每个静态变量彼此独立。您需要将其设置为全局。