use axum::{ extract::State, routing::get, Router, }; #[derive(Clone)] struct AppState { app_name: String, } // 重点看这里 async fn hello(State(st): State<AppState>) -> String { format!("Hello from {}!", st.app_name) } #[tokio::main] async fn main() { let state = AppState { app_name: String::from("My Axum App"), }; let app = Router::new() .route("/", get(hello)) .with_state(state); let listener = tokio::net::TcpListener::bind("127.0.0.1:3000") .await .unwrap(); println!("Listening on http://127.0.0.1:3000"); axum::serve(listener, app).await.unwrap(); }
let state = rodent_act::web::AppState { jobs: { let jobs = std::sync::Arc::new( rodent_act::web::JobManager::new(out_dir, media_dir) ); jobs.load_existing(); jobs }, log_tx, };
jobs := web.NewJobManager(outDir, mediaDir) // 加载上一次运行时持久化的任务 jobs.LoadExisting() state := web.AppState{ Jobs: jobs, LogTx: logTx, }
state := web.AppState{ Jobs: func() *web.JobManager { jobs := web.NewJobManager(outDir, mediaDir) jobs.LoadExisting() return jobs }(), LogTx: logTx, }
Github开源生信云平台 DEMO