我已经定义了一个结构,该结构具有定义静态寿命的函数:
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] 删除。
我来说两句