如何使用main中创建的变量调用需要“静态寿命”的函数?

lyptt

我已经定义了一个结构,该结构具有定义静态寿命的函数:

impl MyStruct {
    pub fn doSomething(&'static self) {
        // Some code goes here
    }
}

我从主要这样消费它:

fn main() {
    let obj = MyStruct {};
    obj.doSomething();
}

它旨在doSomething在应用程序的生命周期内调用以阻止并执行。

我在生命周期检查中遇到了问题,指出它可能会使main功能失效,这对我来说似乎很奇怪,因为一旦main完成应用程序就应该退出。

有没有办法做到这一点?

彼得·霍尔

天真的方法是使用static变量,但是如果您需要在main函数内部实际设置值,它将需要不安全的代码

static mut OBJ: MyStruct = MyStruct;

fn main() {
    unsafe {
        OBJ = MyStruct {};
        OBJ.doSomething();
    }
}

unsafe此后,可以使用可变的静态函数执行几乎所有操作。

更好的方法是让库(lazy_static)处理不安全的代码。

#[macro_use]
extern crate lazy_static;

fn main() {
    lazy_static!{
        static ref OBJ: MyStruct = MyStruct {};
    }
    OBJ.doSomething();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在静态库中的main之前调用函数

如何使用变量在PHP中调用函数?

如何在构造函数调用方法中创建变量?

如何在dplyr中动态创建或调用变量和函数?

如何使用lldb在函数中查找静态变量?

如何为需要“静态寿命”引用并实现Sync的函数赋予模拟值?

Android中公共静态变量的寿命

在main()中,如何从另一个函数中的静态变量获取值?

在Python中,我可以从main函数中调用变量-使用全局变量吗?

为什么克隆需要拥有变量的静态寿命

如何从函数中调用变量

可以从静态函数访问main中声明的变量吗?

从变量调用静态函数

如何在main中调用这些变量?

在Python中如何在调用函数中使用变量?

如何使用 SheetView 函数调用更新 ContentView 中的变量?

在从lua调用的C ++函数中打印静态变量

函数反复调用C中的静态变量

如何在main中调用bool函数?

如何使用构造函数的实例变量在Java脚本中访问构造函数的静态属性?

当不同的函数需要数据库调用中的数据时,如何避免全局变量。(JS)

如何使用在控制台的函数中创建的变量

如何使用数据框中的变量创建函数

如何使用tkinter在嵌套函数中创建全局变量?

使用复制构造函数创建的对象的寿命

如何解决在Main中调用的非静态方法?

Java:使用静态方法在Main外部的方法中调用对象

在 R 中,如何让 update() 找到在调用 update() 的函数中创建的变量?

如何使用或调用在另一个类中声明的静态变量