当使用Rocket的State
时,省略了生命周期,然后处理对路径的请求:
#[post("/foo")]
pub fn foo_handler(db: State<Db>) {
// ...
}
但是,如果提供显式生命周期,那么使用Attempted to retrieve unmanaged state!
的请求上的Rocket错误:
#[post("/foo")]
pub fn foo_handler<'a>(db: State<&'a Db>) {
// ...
}
有一些编译器没有在这里拿起或Rocket避免安全检查,因为这编译好没有任何错误或警告。有任何想法吗?
这似乎是实现所需结果的方法:
#[post("/foo")]
pub fn foo_handler<'a>(db: State<'a, Db>) {
// ...
}
一个例子有助于Rocket的State文档。我希望上面的实现会抛出一个错误,因为它是有效的语法。