如何在函数之间共享静态变量?

问题描述 投票:0回答:1

我正在尝试在函数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 static-variables variable-declaration
1个回答
-2
投票

您不能声明未初始化的静态变量,因为Rust编译器假定所有变量都已初始化。

如果您确实要执行此操作,则需要使用std::mem::MaybeUninit

但是,即使您这样做了,也无法解决您原来的问题(在函数之间共享静态变量)。示例中的每个静态变量彼此独立。您需要将其设置为全局。

© www.soinside.com 2019 - 2024. All rights reserved.