我是将熟悉的 Cpp 项目翻译成 Rust 的初学者。该项目包含一个名为 Globals 的类,它存储全局配置参数。以下是其 cpp 文件的摘录:
static Globals &__get()
{
static Globals globals;
return globals;
}
const Globals &Globals::get()
{
auto &globals = __get();
if (!globals.initialized) {
throw std::runtime_error("Initialize globals first");
}
return globals;
}
void Globals::set(const Globals &globals)
{
__get() = globals;
}
我如何将它翻译成 Rust?据我所知__get()实现了某种单例逻辑。我已经阅读了有关lazy_static crate 以实现类似的东西,但是每次我想读取它的值时解锁变量似乎太冗长了。是否可以在 cpp 代码中使用诸如Globals::get()之类的接口来实现这一点。
我很少发帖,所以如果我忘记了什么,请告诉我,我会提供详细信息。谢谢!