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();
}
如果您想在
状态
中对值进行变异,则需要将其包装在
互斥体
或其他类型的线程安全内部可变性中

另见:

这个问题可以通过使用全局变量来解决

另见: