Как добавить зависимости в мои обработчики маршрутов в Warp? Тривиальный пример заключается в следующем. У меня есть маршрут, по которому я хочу передать значение stati c, которое определяется во время запуска, но фильтр передает значения в конечный обработчик. Как передать дополнительные данные без создания глобальных переменных? Это было бы полезно для внедрения зависимости.
pub fn root_route() -> BoxedFilter<()> {
warp::get().and(warp::path::end()).boxed()
}
pub async fn root_handler(git_sha: String) -> Result<impl warp::Reply, warp::Rejection> {
Ok(warp::reply::json(
json!({
"sha": git_sha
})
.as_object()
.unwrap(),
))
}
#[tokio::main]
async fn main() {
let git_sha = "1234567890".to_string();
let api = root_route().and_then(root_handler);
warp::serve(api).run(([0,0,0,0], 8080)).await;
}