【发布时间】:2018-11-17 08:00:31
【问题描述】:
我已经定义了一个结构,它有一个定义静态生命周期的函数:
impl MyStruct {
pub fn doSomething(&'static self) {
// Some code goes here
}
}
我像这样从 main 消费它:
fn main() {
let obj = MyStruct {};
obj.doSomething();
}
它的目的是让doSomething 调用在应用程序的生命周期内阻塞和执行。
我遇到了生命周期检查的问题,它指出它可能比main 函数的寿命更长,这对我来说似乎很奇怪,因为一旦main 完成,应用程序应该退出。
有没有办法做到这一点?
【问题讨论】:
-
你到底想做什么?
-
@Boiethios 正是我所说的,该函数调用另一个需要静态生命周期的函数,因此函数本身需要静态生命周期才能符合这些要求。我需要从 main 调用该函数,编译器会阻止该函数,因为该结构显然比 main 寿命更长。
-
这个需要静态生命周期的函数是什么?
-
您的问题是您需要对 self 的引用才能拥有静态的生存时间,但它是在 main 函数中定义的。试试:play.rust-lang.org/…
-
@Boiethios hyper 在运行服务器和处理每个请求时需要静态运行时。更糟糕的是它实际上是两层静态需求(两个闭包)。