如何在函数之间共享静态变量?
How is it possible to share a static variable between functions?
我试图在一个函数中定义一个静态变量 f0
并在另一个函数中重新使用它 f1
。
fn f0() {
static v: i32 = 10;
}
fn f1() {
static v: i32; // the compiler reports a syntax error for this statement
}
但是,由于在第二个函数中没有赋值,编译器报错:
expected one of !
, (
, +
, ::
, <
, or =
, found ;
我正在使用 nightly Rust 工具链:rustc 1.40.0-nightly.
这听起来有点奇怪,因为声明静态变量本质上不需要赋值。
应该是什么导致了这个问题?
您不能声明未初始化的静态变量,因为 Rust 编译器假定所有变量都已初始化。
如果你真的想做,你会想要使用std::mem::MaybeUninit
。
但是,即使您这样做了,也无法解决您最初的问题(在函数之间共享静态变量)。您示例中的每个静态变量都相互独立。
因此,您需要创建一个全局静态变量。
我试图在一个函数中定义一个静态变量 f0
并在另一个函数中重新使用它 f1
。
fn f0() {
static v: i32 = 10;
}
fn f1() {
static v: i32; // the compiler reports a syntax error for this statement
}
但是,由于在第二个函数中没有赋值,编译器报错:
expected one of
!
,(
,+
,::
,<
, or=
, found;
我正在使用 nightly Rust 工具链:rustc 1.40.0-nightly.
这听起来有点奇怪,因为声明静态变量本质上不需要赋值。
应该是什么导致了这个问题?
您不能声明未初始化的静态变量,因为 Rust 编译器假定所有变量都已初始化。
如果你真的想做,你会想要使用std::mem::MaybeUninit
。
但是,即使您这样做了,也无法解决您最初的问题(在函数之间共享静态变量)。您示例中的每个静态变量都相互独立。
因此,您需要创建一个全局静态变量。