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,
}