【发布时间】:2022-09-25 12:06:13
【问题描述】:
一旦服务器开始关闭,我希望能够对我的状态做一些事情
例子:
struct MyConfig {
user_val: String
}
#[get(\"/hello\")]
fn hello(config: &State<MyConfig>) -> Result<String, error::Error> {
//do stuff
Ok(&config.user_val)
}
#[rocket::main]
async fn main() -> Result<(), error::Error> {
let config = MyConfig{user_val: \"hello\".to_string()};
let _rocket = rocket::build()
.manage(config) //cant pass as borrow because it wont live long enough
.mount(\"/\", routes![hello])
.launch()
.await?;
println!(\"{}\", &config.user_val); //cant access because value moved
Ok(())
}
结果应该是当我关闭它打印 user_val 的程序时(我不想克隆)
但是在将其设置为状态后,服务器结束后不再可以访问
-
在
_rocket成功完成(即正常关闭)之后,您应该能够通过_rocket.state::<MyConfig>().unwrap()访问&MyConfig。 AFAICS 无法检索拥有的版本,但如果您绝对需要,您可以将MyConfig包装成Arc和Arc::into_inner()。
标签: rust rust-rocket