Rust 如何将main中初始化的变量传递给火箭路径处理程序?
我有一个在Rust 如何将main中初始化的变量传递给火箭路径处理程序?,rust,rust-rocket,Rust,Rust Rocket,我有一个在main(第9行)中初始化的变量,我想在我的一个路由处理程序中访问该变量的引用 #[get("/")] fn index() -> String { return fetch_data::fetch(format!("posts"), &redis_conn).unwrap(); // How can I get redis_conn? } fn main() { let redis_conn = fetch_data::get_redis_connec
main
(第9行)中初始化的变量,我想在我的一个路由处理程序中访问该变量的引用
#[get("/")]
fn index() -> String {
return fetch_data::fetch(format!("posts"), &redis_conn).unwrap(); // How can I get redis_conn?
}
fn main() {
let redis_conn = fetch_data::get_redis_connection(); // initialized here
rocket::ignite().mount("/", routes![index]).launch();
}
在其他语言中,这个问题可以通过使用全局变量来解决。请阅读,特别是
使用和具有共享状态:
#![feature(proc_macro_hygiene, decl_macro)]
#[macro_use]
extern crate rocket; // 0.4.2
use rocket::State;
struct RedisThing(i32);
#[get("/")]
fn index(redis: State<RedisThing>) -> String {
redis.0.to_string()
}
fn main() {
let redis = RedisThing(42);
rocket::ignite()
.manage(redis)
.mount("/", routes![index])
.launch();
}
#![功能(过程宏、数据宏)]
#[宏_使用]
外部板条箱火箭;//0.4.2
使用火箭::状态;
结构再贴现(i32);
#[获取(“/”)]
fn索引(redis:State)->字符串{
redis.0.to_string()
}
fn main(){
设redis=RedisThing(42);
火箭:点火
.管理(redis)
.mount(“/”,routes![索引])
.launch();
}
如果您想在状态
中对值进行变异,则需要将其包装在互斥体
或其他类型的线程安全内部可变性中
另见: